JavaScript实现数组去重

91 阅读1分钟

题:假设有一个数组arr = [1,2,1,3,2,4,5,5,6,7],要求去除其重复元素
方法一:不额外创建数组,在原数组本身中去重

        const arr = [1, 2, 1, 3, 2, 4, 5, 5, 6, 7]
        for (let i = 1; i < arr.length;) {
//从元素前面搜索是否有重复元素,如果搜索到重复元素则返回值不为-1
            if (arr.lastIndexOf(arr[i], i - 1) != -1) {
//删除arr[i],注意删除该元素后,后面的元素会往前移一位,所以有元素被删除时i不加1,以免遗漏相邻重复的元素
                arr.splice(i, 1)
            }
            else i++;//只有未找到与当前元素arr[i]重复的元素时i才自增1
        }
        console.log(arr)

运行结果
在这里插入图片描述

方法二:额外创建一个数组存储去重的数组

        const newArr = []
        for(let ele of arr){
            if(newArr.indexOf(ele) === -1){
                //未在newArr中找到重复元素就将其加入到newArr中
                newArr.push(ele)
            }
        }
        console.log(newArr)

运行结果
在这里插入图片描述