JS实现数组去重

Posted yinping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS实现数组去重相关的知识,希望对你有一定的参考价值。

1.ES6新增数据去重方法Set

    思路:Set 是ES6引入的一种新的数据结构类型,允许你存储任何类型的唯一值,无论是原始值还是对象引用

        let aa = [1, 2, "2", 4, 9, "a", "a", 2, 3, 5, 6, 5];

        //Set数组简单的去重
        console.log([...new Set(aa)]);   // [1, 2, "2", 4, 9, "a", 3, 5, 6]

        let s1 = new Set();
        s1.add(‘a‘);
        s1.add(‘a‘);
        console.log(s1);   //{"a"}

  

 

2.简单去重方法

  思路:遍历数组中的每一个数据,判断新数组中是否存在当前数据,如不存在加入

//简单去重方法
        function uniq(array) {
            let temp = [];
            array.forEach(item => {
                if (temp.indexOf(item) == -1) {
                    temp.push(item);
                }
            })
            console.log(temp);
        }
        uniq(aa);  //[1, 2, "2", 4, 9, "a", 3, 5, 6]

3.数组下标判断方法

  思路:判断当前数组的第i项第一次出现的位置是否是i位,若是,则不重复加入新数组

 function uniq3(array) {
            let newarr = [];
            for (let i = 0; i < array.length; i++) {
                if (array.indexOf(array[i]) == i) {
                    newarr.push(array[i]);
                }
            }
            return newarr;
        }
        console.log(uniq3(aa));   //[1, 2, "2", 4, 9, "a", 3, 5, 6]

4.相邻排序法

  思路:给数组排序,仅加入不与相邻的数组相同的数据

function uniq4(array) {
            array.sort();
            console.log(array);

            let temp = [array[0]];
            for (let i = 1; i < array.length; i++) {
                if (array[i] != temp[temp.length - 1]) {
                    temp.push(array[i]);
                }
            }
            return temp;
        }
        console.log(uniq4(aa));  //[1, 2, 3, 4, 5, 6, 9, "a"]

5.双层循环

  思路:当内层循环检测到跟外层循环一样的值的时候,跳出内层循环,抛弃外层循环当前值,继续下一次循环

 function uniq5(array) {
            let temp = [];
            for (let i = 0; i < array.length; i++) {
                for (let j = i + 1; j < array.length; j++) {
                    if (array[i] === array[j]) {
                        ++i;
                    }
                }
                temp.push(array[i]);
            }
            return temp;
        }
        console.log(uniq5(aa));  //[1, "2", 2, 3, 4, 5, 6, 9, "a"]

6.Object.keys()

  思路:Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 

        let obj = {};//key 
        arr1.forEach(item => {
            obj[item] = 1;
        });
      
        console.log(Object.keys(obj).map(o => Number(o)));//[1, 2, 3, 4, 5]

 

以上是关于JS实现数组去重的主要内容,如果未能解决你的问题,请参考以下文章

js数组去重的几种方法

JS实现字符串去重,数组去重

js实现数组排序并去重

JS实现数组去重

js实现数组去重的方式(7种)

js通过递归实现数组去重