欢迎光临
我们一直在努力

JavaScript | 四种方法对数组去重

For循环+splice方法

通过for循环遍历两次。外层循环设置内层循环次数。内层循环第一次把后面的元素依次和第一个元素对比,若一样,则删除。第二次循环把后面的元素依次和第二个元素对比,若一样,则删除...循环进行这个对比操作。

var arr = [1,2,3,2,1,5,6,4,1];
for(var i=0;i<arr.length;i++){
    var item = arr[i];
    for(j=i+1;j<arr.length;j++){
        if(item === arr[j]){
            arr.splice(j,1);
            j--; //注意 因为当前位置元素被删除,因此要j--,继续这个位置的元素比较
        }
    }
}
console.log(arr);

创建新数组+push方法

外层循环遍历原数组,取值赋给item,然后内层遍历新数组,如果新数组存在该元素,则不进行添加,否则push添加进去(这里通过创建bool值判断)。

var arr = [1,2,3,2,1,5,6,4,1];
var arr2= [];
for(i=0;i<arr.length;i++){
    var item = arr[i];
    var bool = true;
    for(j=0;j<arr2.length;j++){
        if(arr2[j] === arr[i]){
            bool = false;
            break;
        }
    }
    if(bool){
        arr2.push(arr[i]);
    }
}
console.log(arr2);

通过indexof+push方法

通过indexof判断新数组是否能查找到原数组中的元素,如果查找不到则返回-1(能查到会返回索引值),此时把当前元素push进新数组。

var arr = [1,2,3,2,1,5,6,4,1];
var arr2= [];
for(i=0;i<arr.length;i++){
    if(arr2.indexOf(arr[i]) === -1) arr2.push(arr[i]);
}
console.log(arr2);

filter+indexof方法

var conArr = [1,2,3,4,5,2,1,3,4,2,6];
    var conArr2 = conArr.filter(function(item,index,arr){
    return arr.indexOf(item) === index;
});
赞(2) 打赏
未经允许不得转载:散人研 » JavaScript | 四种方法对数组去重
分享到: 更多 (0)

评论 抢沙发

4 + 9 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏