js 数组去重

262 阅读1分钟

方法一(不推荐)

  • 1.创建一个新数组,将原数组中的第一项存在新数组中
  • 2.在旧数组中取出一个数,与新数组中的每一项进行对比,如果新数组中没有,就存入数组中
  • 3.不断循环步骤2
    <script>
        const list =[3,3,4,5,6,3,5,6,9,5,6,7];
        const unique = (arr) => {
            var newarr =[arr[0]];
            arr.forEach((v, i) => {
                let flag= false;
                 for (var j =0; j<newarr.length;j++) {
                    if (arr[i] == newarr[j]) {
                    flag =true;
                    break;
                    }
                }
                if (!flag) {
                    newarr.push(arr[i]);
                }
            })
            return newarr;
        }
        console.log(unique(list));
    </script>

方法二

  • 1.创建一个新数组,将原数组中的第一项存在新数组中
  • 2.先对原来的数组进行排序,--用sort()方法
  • 3.将新数组的最后一项,与原来的数组进行对比,如果不相等,就将该数据添加到新数组中
    <script>
        const list =[3,3,4,5,6,3,5,6,9,5,6,7];
        const unique = (arr) => {
            arr = arr.sort();
            let newarr =[arr[0]];
            arr.forEach((v, i) => {
                if (arr[i] != newarr[newarr.length-1]) {
                    newarr.push(arr[i]);
                }
            })
            return newarr;
        }
        console.log(unique(list));
    </script>

方法三

  • 1.创建一个新的数组
  • 2.利用数组下标来判断
    <script>
        const list =[3,3,4,5,6,3,5,6,9,5,6,7];
        const unique = (arr) => {
           let newarr = [arr[0]];
           arr.forEach((v, i) => {
               if (newarr.indexOf(arr[i]) == -1) {
                   newarr.push(arr[i]);
               }
           })
           return newarr;
        }
        console.log(unique(list));
    </script>

方法四

  • 使用php的方法来为数据去重--unique方法

方法五(推荐,性能最好)

  • 根据对象的属性判断数组
    <script>
        const list =[3,3,4,5,6,3,5,6,9,5,6,7];
        const unique = (arr) =>  {
            var newarr =[];
            var obj = {};
            arr.forEach((v, i) => {
                if (!obj[arr[i]]) {
                    newarr.push(arr[i]);
                    obj[arr[i]]=1;
                }
            })
            return newarr;
        }
        console.log(unique(list));
    </script>

方法六(推荐,代码最少)

  • 利用es6的Set数据
    <script>
        const list =[3,3,4,5,6,3,5,6,9,5,6,7];
        const unique = (arr) => {
            return [...new Set(arr)];
            // return Array.from(new Set(arr))
        }
        console.log(unique(list));
    </script>