数组去重的四种简单方法

89 阅读2分钟

2.数组去重

2.1导入

2.1.1 indexOf()

返回某个指定元素的位置,没有的话,就返回 -1

        let arr = [1,2,3,4,5,2];
        let a = arr.indexOf(1); //0
        a = arr.indexOf(3); //2
        a = arr.indexOf(7); -1
        console.log(a); 
2.1.2splice()

方法用于添加或删除数组中的元素。 返回的是被删除的元素数组。

       let arr = [1, 2, 3, 4, 5, 2];
​
        let arr1 = arr.splice(2,1);
        console.log(arr1); //[3]
        console.log(arr);  //[1, 2, 4, 5, 2]
​
        let arr2 = arr.splice(0,0,1);
        console.log(arr2); //[]
        console.log(arr); //[1, 1, 2, 3, 4, 5, 2]
2.1.3 includes()

方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false

        let arr = [1, 2, 3, 4, 5, 2];
        let arr1 = arr.includes(3);
        let arr2 = arr.includes(6);
        console.log(arr1); //ture
        console.log(arr2); //false
2.1.4push()

向数组尾部添加一个元素并且返回长度

        let arr = [1, 2, 3, 4, 5, 2];
        let arr1 = arr.push(3);
        console.log(arr1); //7
        console.log(arr); //[1, 2, 3, 4, 5, 2, 3]

2.2 Set方法

什么是set呢?

Set是ES6提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的。

        let arr = [1,2,3,4,5,4,2,1];
        let arr2 = new Set(arr); //返回一个类数组对象
        let arr3 = [...arr2];
        console.log(arr3); // [1, 2, 3, 4, 5]
​
        // 简便写法
        let arr4 = [...(new Set(arr))];
        console.log(arr4); // [1, 2, 3, 4, 5]

2.3 双重for循环

let arr = [1,2,2,2,3,4,5,4,2,1];
        function fun(){
            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所在的位置的元素
                       j--;
                   }
               }
                
            }
            return arr;
        }
​
    console.log(fun(arr)); //[1, 2, 3, 4, 5]    //[1, 2, 2, 3, 4, 5]     //[1, 2, 3, 4, 5]

2.4 indexOf

 let arr = [1,2,3,4,5,4,2,1];
         
        function fun(){
            let arr1 = [];
            for (let i = 0; i < arr.length; i++) {
               if(arr1.indexOf(arr[i]) === -1){
                   arr1.push(arr[i]);
               }
            }
            return arr1;
        }
​
        console.log(fun(arr)); //[1, 2, 3, 4, 5]

2.5 includes

 function fun(){
            let arr1 = [];
            for (let i = 0; i < arr.length; i++) {
               if(!arr1.includes(arr[i])){
                   arr1.push(arr[i])
               }
                
            }
            return arr1;
        }
​
        console.log(fun(arr)); //[1, 2, 3, 4, 5]