JS数组去重

方法一:

先使用数组中的sort方法,将数组进行重排,按照从小到大的顺序;然后再使用for循环遍历,判断某一项和它相邻的项是否相等,若相等,则使用splice删除方法删除其中一个,已达到去重的目的,但是当我们删除掉一个元素的时候,后面的项就会自动补位到,所以要i–一下。

var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
function quchong(ar) {
    var ar = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
    ar.sort(function (a, b) {
        return a - b;
    });
    for (var i = 0; i < ar.length; i++) {
        if (ar[i] === ar[i + 1]) {
            ar.splice(i, 1);
            i--;
        }
    }
    return ar;
}
console.log(quchong(arr));

方法二:

首先新建一个空数组,然后利用for循环遍历,使用indexof方法(一般接受一个参数,也就是接受要查找的值,然后返回这个值在数组中的位置;如果没有查找的,就会返回-1)查找新数组中有没有和旧数组中相同的数字,如果没有,就把这个数字push到新数组中

  var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
   function quchong(ar){
       var array=[];
       for(var i in ar){
           if(array.indexOf(ar[i])===-1){
               array.push(ar[i]);
           }
       }
       return array;
   }
   console.log(quchong(arr));

方法三:

循环嵌套,让两次循环中的项相互比较,相同就删除

 var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
    for(var i=0;i<arr.length;i++){
        for(var j=i+1;j<arr.length;j++){
            if(arr[i]===arr[j]){
                arr.splice(j,1);
                j--;
            }
        }
    }
    console.log(arr);

方法四:

利用对象里面不重名的特性,对象的存储是键值对的方式

 var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
   var obj={};
   for(var i=0;i<arr.length;i++){
       var a=arr[i];
       if(obj[a]){//如果为true,则说明对象中存在这个属性,也就是说这个值重复了。
           arr.splice(i,1);
           i--;
       }else{
           obj[a]=a;
       }
   }
   console.log(arr);

方法五

使用es6中的set方法(类似于数组,但是成员的 值都是唯一的,没用重复的值。Set本身是一个构造函数,用来生成Set数据结构)

 var arr = [1, 4, 5, 6, 3, 1, 5, 4, 10, 9, 10];
    var ar=new Set(arr);
    console.log([...ar]);

参考链接:https://blog.youkuaiyun.com/icessunt/article/details/69098474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值