js数组去重的方法

法一:利用indexOf的方法

代码如下:
indexOf(要查找的值,开始查找的位置)
思想:从数组第一个开始循环,如果此时循环的位置A(i)能与 用indexOf查找到的i位置的对应的值 的位置B相同则,说明i位置上的值在i位置之前是唯一的。(好生拗口)

var arr = [3,4,5,12,0,0,7,45,9,0,3];
var brr = [],
    j = 0;
for(var i=0;i<arr.length;i++){
    if(i === arr.indexOf(arr[i],0)){
        /* brr[j]=arr[i]; 
        j++;
        这样也可以*/
        brr.push(arr[i]);
       
    }
}
console.log("应用indexOf方法去重:",brr);

法二:双层for循环,加splice
思想:去重用splice,但是需要双层for循环,内层for循环执行删除重复项的工作。
splice(要删除第一项的位置,要删除的个数,要在这个位置添加插入的任意数量的值)


for(i=0;i<arr.length;i++){
    for(j=i+1;j<arr.length;j++){
        if(arr[j]===arr[i]){
            arr.splice(j,1);
        }
    }
}
console.log("应用splice方法去重:",arr);

法三:先排序,比较相邻的位置的值
先排序,再比较相邻的数值


arr.sort(function(v2,v1) {
    return v2-v1;
});
var crr = [];
for(i=0;i<arr.length;i++){
    if(arr[i]!=arr[i+1]){
        crr.push(arr[i]);
    }
}
console.log("应用排序方法去重:",crr);

法四:set方法

var arr2 = new Set(arr);

set方法得到的arr2是对象的形式
再将对象转化为数组:
转为数组法一:

console.log(Array.from(arr2));

转为数组二:

console.log([...arr2]);

转为数组法三:

var arr3 = [];
//for of 循环:
for(var x of arr2){
    console.log(x);
    arr3.push(x);
}
console.log(arr3);

ps:听说还有好多好多方法,明天再来,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值