js,javascript 数组去重

1. 利用set这种数据结构,类似数组。

Array.from(new Set(arr))
[...new Set(arr)]

弊端:无法去重成员是对象和数组。

2. 双层循环,一一比较

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

3. 单层循环+indexOf

for (var i = 0; i < arr.length; i++) {
        if (array .indexOf(arr[i]) === -1) {
            array .push(arr[i])
        }
    }

4. 先排序(sort),再单层循环,左右比较

arr = arr.sort()
var arrry= [arr[0]];
for (var i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i-1]) {
arrry.push(arr[i]);
}
}

5. 利用map数据结构,类似对象,但是键可以是任意数据类型,不能有重复的键名。

let map = new Map();
  let array = new Array();  // 数组用于返回结果
  for (let i = 0; i < arr.length; i++) {
    if(map .has(arr[i])) {  // 如果有该key值
      map .set(arr[i], true); 
    } else { 
      map .set(arr[i], false);   // 如果没有该key值
      array .push(arr[i]);
    }
  } 

6. 单层循环+includes

var array =[];
    for(var i = 0; i < arr.length; i++) {
            if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
                    array.push(arr[i]);
              }
    }
上一篇:java 环境变量配置 详解!


下一篇:JavaScript - V8