(🍺);|

秋弦

园龄:4年6个月粉丝:28关注:1

2022-04-03 18:31阅读: 39评论: 0推荐: 0

数组的去重

indexOf() lastIndexOf() 实现数组去重

// indexOf()  lastIndexOf() 实现数组去重
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
for(let i = 0; i < arr.length; i++){
    // i 作为数组的索引值
    // console.log(arr[i]);
    // 判断是否存在重复的值
    // 第一次出现位置的索引值和最后一次出现位置的索引值不相等
    if(arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])){
        // 出现多次,可以删除一个元素,对原数组进行改变
        arr.splice(i,1);
        // console.log('长度',arr.length);
        // 每次删除后,数组的长度发生改变,但是i++始终执行;导致循环提前结束;因此需要长度和索引值保持一致
        i--;
    }
    // console.log('索引值',i);
}
console.log(arr);
//[ 2, 3, 4, 5, 1 ]

借助空数组实现去重

let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
let newArr=[];
for(let i = 0;i < arr.length;i++){
    // 在新数组中检索原数组中的每个值 不存在则为-1
    if(newArr.indexOf(arr[i]) == -1){
        // 不存在则添加
        newArr.push(arr[i]);
    }
}
console.log(newArr);//[ 1, 2, 3, 4, 5 ]

通过两次循环实现数组去重

// 两次循环实现数组去重
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
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--;
        }
    }
}
console.log(arr); //[ 1, 2, 3, 4, 5 ]

倒叙遍历数组进行去重

// 倒叙遍历数组进行去重 可以不用考虑数据删除后下标改变造成的影响
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
for(let i = arr.length - 1; i >= 0; i--){
    for(let j = i - 1; j >= 0; j--){
        if(arr[i] == arr[j]){
            arr.splice(j, 1)
        }
    }
}
console.log(arr); //[ 2, 3, 4, 5, 1 ]

通过ES6 set()实现数组去重

let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
let res = [...new Set(arr)];
console.log(res);//[ 1, 2, 3, 4, 5 ]

本文作者:秋弦

本文链接:https://www.cnblogs.com/Eamon-18/p/16096920.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   秋弦  阅读(39)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起