数组去重的几种方法

数组去重在日常开发中作中或者是面试中是经常出现的一个问题,结合es6可以有很多种方法实现

1 思路:将数组第一项放到一个新数组中,然后将原数组的每一项与新数组做对比,若无相同值,则将此数据放到新数组中,最后返回新数组

          function unique1(arr){
                let newArr=[arr[0]]
                for (let i=1;i<arr.length;i++) {
                    let isRepeat=false;
                    for (let j=0;j<newArr.length;j++) {
                        if (newArr[j]==arr[i]) {
                            isRepeat=true;
                            break;
                        }
                    }
                    if (!isRepeat) {
                        newArr.push(arr[i])
                    }
                }
                return newArr
            }

2 思路:将原数组排序,然后与新数组的相邻项比较

          function unique2(arr){
                let arrSort=arr.sort()
                let newArr=[arrSort[0]]
                for (let i=1;i<arrSort.length;i++) {
                    if (newArr[newArr.length-1]!==arrSort[i]) {
                        newArr.push(arrSort[i])
                    }
                }
                return newArr
            }

3 思路:利用数组的indexof(),在新数组里面遍历目标数组的每一项,若没有则将此项添加到新数组中

          function unique3(arr){
                let newArr=[]
                for (let i=0;i<arr.length;i++) {
                    if (newArr.indexOf(arr[i])===-1) {
                        newArr.push(arr[i])
                    }
                }
                return newArr
            }

4 思路:利用数组方法includes(),判断新数组是否包含,若没有则添加到新数组中

          function unique4(arr){
                let newArr=[]
                for (let i=0;i<arr.length;i++) {
                    if (!newArr.includes(arr[i])) {
                        newArr.push(arr[i])
                    }
                }
                return newArr
            }

5 思路:利用数组的filter()和includes()

          function unique5(arr){
                let newArr=[]
                return newArr=arr.filter((item)=>{
                    return newArr.includes(item)?'':newArr.push(item)
                })
            }

6 思路:用数组的forEach()和includes()

          function unique6(arr){
                let newArr=[]
                arr.forEach((item)=>{
                    newArr.includes(item)?'':newArr.push(item)
                })
                return newArr
            }

7 思路:利用数组的lastIndexOf()方法

          function unique7(arr){
                let newArr=[]
                for (let i=0;i<arr.length;i++) {
                    if (newArr.lastIndexOf(arr[i])===-1) {
                        newArr.push(arr[i])
                    }
                }
                return newArr
            }

8 思路:利用数组的from和set方法

          function unique8(arr){
                return Array.from(new Set(arr))
            }

欢迎转载,转载需带着文章出处链接~~