js 数组去重总结

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js 数组去重总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1、es6 set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr)=> [...new Set(arr)];
unique(arr);//[1, 2, 3, 4, 6, 7]

2、es6 map

思路为map对象里没有数组元素的属性,就在map对象里添加数组元素的属性,并赋值为1,然后在过滤。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr)=> {
    let seen = new Map();
    return arr.filter((item) => {
        return !seen.has(item) && seen.set(item,1);
    });
};
unique(arr);

3、for 双重循环

通过判断第二层循环,去重的数组中是否含有该元素,如果有就退出第二层循环,如果没有j==result.length就相等,然后把对应的元素添加到最后的数组里面。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let result = [];
for(VAR i = 0 ; i < arr.length; i++) {
    for(var j = 0 ; j < result.length ; j++) {
        if( arr[i] === result[j]){
            break;
        };
    };
    if(j == result.length){
        result.push(arr[i]);
    };
};
console.LOG(result);

4、indexOf

indexOf() 方法可返回某个指定的元素在数组中首次出现的位置。如果没有就返回-1。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
    let result = [];
    for( var i = 0 ; i < arr.length ; i++){
        if(result.indexOf(arr[i]) == -1){
            result.push(arr[i])
        }
    };
    return result;
};
unique(arr);

5、indexOf filter

let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
    return arr.filter((item,index) => {
        return arr.indexOf(item) === index;
    })
};
unique(arr);

6、排序后去重

数组排序,然后判断是否是第一个元素并且前一个元素是否和后一个元素相同,不同就加进新数组
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
    let arrNew = arr.sort((a,b)=>a-b);
    let seen,result = [];
    for(var i = 0 ; i < arrNew.length ;i++){
        if(!seen || seen != arrNew[i]){
            result.push(arrNew[i]);
        };
        seen = arrNew[i]
    };
    return result;
};
unique(arr);

脚本宝典总结

以上是脚本宝典为你收集整理的js 数组去重总结全部内容,希望文章能够帮你解决js 数组去重总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。