javascript数组去重的方法

在js中数组去重的方法有很多种,下面是我稍微总结的几种数组去重的方法,如果大家有更好的方法,欢迎下方留言。

方法一 向空数组插入元素的方法

定义一个空数组,对原数组进行循环遍历,每次遍历查找判断新数组中有没有该元素,如果没有则向新数组中插入该元素。

function noRepeat(arr){
	var NewArr = [];
	for(var i = 0; i < arr.length; i++){
		if(NewArr.indexof(arr[i])<0){
			NewArr.push(i);
		}
	}	
	return NewArr;
}

方法二 For循环嵌套使用splice()方法去重

外层循环下标i从0到length-1,内层循环下标j从i+1到length,外层循环每次执行,都要判断当前下标i以后的所有元素有没有与当前下标元素相等的值,如果有则使用arr.splice()方法移除,并让j–,进行下一次判断。

function noRepeat(arr){
	for(var i = 0; i < arr.length-1; i++){
		for(var j = i+1; j < arr.length; j++){
			if(arr[i]===arr[j]){
				arr.splice(j,1);
				j--;
			}
		}
	}
	return arr;
}

方法三 使用sort()排序 用For循环判断相邻元素

先使用sort()方法将数组排序,然后使用For循环,两两比较,如果相邻两个元素相等,则使用splice()方法移除后面的相同元素,并让i–,惊醒下一次循环判断。

function noRepeat(arr){
	arr.sort();
	for(var i = 0; i < arr.length-1; i++){
		if(arr[i]===arr[i+1]){
			arr.splice(i+1,1);
			i--;
		}
	}	
	return arr;
}

方法四 结合对象和数组的特点

把数组的元素看成是对象的属性,如果属性值为undefined,证明不含属性名,可以赋值为1,如果下次再次出现属性,证明是重复的值,可以扔掉。

function noRepeat(arr){
	var obj = {}; 
	var newArr = [];
	for(var i = 0; i < arr.length; i++){
		if(obj[arr[i]]===undefined){
			obj[arr[i]] = 1;
			newArr.push(arr[i]);
		}
	}		
	return newArr;
}

方法五 ES6的数组去重方法

利用set集合里的所有元素都是唯一的这一特点。

function noRepeat(arr) {
    return Array.from(new Set(arr))
}
发布了7 篇原创文章 · 获赞 3 · 访问量 173

猜你喜欢

转载自blog.csdn.net/C_Chenshao/article/details/104644379