js数组去重的方法

最简单的方法一:

var arr = [1,2,3,1];//原数组
var arr2 = [];//新数组
for(var i=0;i<arr.length;i++){
  //(indexOf本意是找到数组中某个项在数组的索引,如果找不到就会返回-1)
  if(arr2.indexOf(arr[i]) == -1){//原理:检测如果原数组的每一项在新数组找不到才会添加到新数组就达到了去重的效果。
    arr2.push(arr[i]);
  }
}
console.log(arr2);

最简单的方法二:当你很任性不想用array.indexOf("item")时

var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"];
var anotherArray = [];
arr.forEach(function(item,index,oarray){
        var isExist = false;
        // try{
        //         anotherArray.forEach(function(item1,index1,oarray1){
        //                        if(item1 === item){
        //                                isExist = true;
        //                                throw "isExist";
        //                        }
        //         })
        // }catch(e){
        //
        //         log(e.message);
        // }

        for(var i = 0,len=arr.length;i<len;i++){
            if(anotherArray[i] === item){
                    isExist = true;
                    break;
            }
        }

        if(isExist == true){

        }else{
                anotherArray.push(item);
        }
})
log("anotherArray",anotherArray);

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

错误的方法,你们遇到的坑,本帅哥先用力的踩了一遍,请大家珍惜勇于冒险的帅哥哟:

Array.prototype.unique2 = function(){
  this.sort(); //先排序,(PS:这是个网上找的一个方法,如果没能正确排序,就会去不了重。我个人不推荐使用)
  var res = [this[0]];
  for(var i = 1; i < this.length; i++){
    if(this[i] !== res[res.length - 1]){
      res.push(this[i]);
    }
  }
  return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"];//专门对会上面的排序的,哈哈哈!
log(arr.unique2());//[0, 1, "1", 1, "15", 15, "a", "b", "d", "e"]

//大家看看网上找的这个方法,分分钟钟要你掉坑里。http://www.jb51.net/article/46154.htm
Array.prototype.unique3 = function(){
  var res = [];
  var json = {};
  for(var i = 0; i < this.length; i++){
    if(!json[this[i]]){
      res.push(this[i]);
      json[this[i]] = 1;
    }
  }
  return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"];
log(arr.unique3());//[1, "a", "b", "d", "e", 0, 15] //上面这种方法把不该去掉的都去掉了,如果有哪位小伙子用了这方法,我也只能呵呵...了


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值