实现数组去重的方式

发布时间:2024年01月07日
  1. 利用Es6中新的数据结构SetSet它类似于数组,但是成员的值都是唯一的,没有重复的值。可以通过搭配Array.from()转换为真实数组。

     let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0];
         function unique(arr) {
           return Array.from(new Set(arr));
        }
    console.log(unique(num));
  2. ?利用indexOf。遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加。利用 新数组.indexOf(数组元素) 如果返回是 -1 就说明 新数组里面没有改元素。
     let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0];
     let newArr = []
        for (let i = 0; i < num.length; i++) {
            if (newArr.indexOf(num[i]) === -1) {
                newArr.push(num[i]);
            }
        }
    console.log(newArr)
  3. 双重循环配合splice进行去重,使用了两个嵌套的for循环来比较数组中的元素。外部的for循环遍历数组中的每个元素,而内部的for循环则从当前元素之后的位置开始,逐个与其他元素比较。当发现数组中的两个元素相等时,通过splice方法将重复出现的元素从数组中删除。splice方法的第一个参数是要删除的元素的索引,第二个参数是要删除的元素个数。然后通过将j减1,以便在删除元素后正确地继续检查剩余的元素。
    let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0];
        let newNum = [];
        function unique(arr) {
            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--;
                    }
                }
            }
            return arr;
        }
        console.log(unique(num));

  4. 使用filter:通过Array的filter方法和indexOf或者includes来筛选出不重复的元素。filter方法接收一个回调函数作为参数。在这个例子中,回调函数接受三个参数:value:当前正在被处理的元素值。index:当前元素的索引。self:数组本身。

     let num = [2, 0, 1, 4, 9, 7, 5, 1, 2, 0];
        let newArr = num.filter((value, index, self) => {
            return self.indexOf(value) === index;
        })
        console.log(newArr);
文章来源:https://blog.csdn.net/2301_76760417/article/details/135433865
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。