JS 中常用的去重

95 阅读1分钟

JS 中常用的去重

第一种:indexOf (获取字符串值在字符串中首次出现的位置,若没有这个值,则返回-1)

let arr = [15,45,88,45,78,15,55,88];
    let arr1 = []; //声明新数组
    for(let i in arr){ //for...in 遍历数组
        if(arr1.indexOf(arr[i]) == -1){ 使用indexOf 判断arr1和arr 里面是否有相同的,没有就添加,有就不添加;
            arr1.push(arr[i]);
        }
    }
    console.log(arr1);

 第二种:双for循环 (每一个数据进行判断)

let arr = [15, 45, 88, 45, 78, 15, 55, 88];
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--; //数组的总长度发生了改变,进行j--
            }
        }
    }
    console.log(arr);

第三种:filter

let arr = [15, 45, 88, 45, 78, 15, 55, 88];
    function fn(arr){
        return arr.filter((item,index,arr)=>{
            return arr.indexOf(item,0) === index; //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
        });
    }
    console.log(fn(arr));

 第四种:Set (ES6)

    let arr = [15, 45, 88, 45, 78, 15, 55, 88];
	let s = new Set(arr) //实现数组去重,但不是数组类型
    arr = [...new Set(arr)]; //转为arrAry类型
    console.log(arr);

第五种:[...new Set(arrAry)]  (ES6)

let arr = [15, 45, 88, 45, 78, 15, 55, 88];
arr = [...new Set(arr)];
console.log(arr);