数组去重的四种常用方式

1.双层for循环去重

判断前一个元素和后一个元素是否相等,如果相等删掉后一个元素

function func(tempArr){
	for(var i=0;i<tempArr.length;i++){
		for(var j=i+1;j<tempArr.length;j++){
			if(tempArr[i]==tempArr[j]){
				tempArr.splice(j,1);
                j--;
			};
		};
	};
	return tempArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]

2.先排序再去重

先排序,然后相邻两个元素比较,不相等就把前一个元素push到新数组当中

function func(tempArr){
    tempArr.sort(function(a,b){//sort()方法会影响原数组的顺序
        return a-b;
    });		
    var newArr = [];
	for(var i=0;i<tempArr.length;i++){
		if(tempArr[i]!=tempArr[i+1]){
			newArr.push(arr[i]);
		};
	};
	return newArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]

3.利用下标去重

新建一个空数组,判断原数组中的数是第一次出现,那么就把这个数放到新数组里面

function func(tempArr){
	var newArr = [];
	for(var i=0;i<tempArr.length;i++){
		if(newArr.indexOf(tempArr[i])==-1){//需注意:IE8以下不支持indexOf()方法
			newArr.push(arr[i]);
			//等价于下面两种写法
			//newArr.splice(i,0,arr[i]);
			//newArr.splice(newArr.length,0,arr[i]);
		};
	};
	return tempArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]

4.利用includes去重

新建一个数组,判断新数组中是否包含待去重数组中的元素,不包含就把这个元素push进新数组当中

function func(tempArr){
	var newArr = [];
	for(var i=0;i<tempArr.length;i++){
		if(!newArr.includes(tempArr[i])){
			newArr.push(tempArr[i]);
		};
	};
	return newArr;
};
var arr = [20,3,4,45,34,43,20,45,60];
console.log(func(arr)); //(7) [20, 3, 4, 45, 34, 43, 60]

猜你喜欢

转载自blog.csdn.net/weixin_55992854/article/details/117371667