JavaScript数组去重

1. Set配合扩展操作符…或Array.from

var arr = [1,1,2,2,3,4,4];

var set = new Set(arr);  //Set(4) {1, 2, 3, "a"}
var newArr = [...set];//(4) [1, 2, 3, 4],...扩展操作符内部用for of实现
var newArr2 = Array.from(set);//(4) [1, 2, 3, 4]

({}).toString.call(set); //"[object Set]"

2. filter

arr.filter(function(value,index,arr){
    return arr.indexOf(value) === index;
})

3.利用对象

var arr=[1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false];

var obj={};
var temp=[];
for(var i=0;i<arr.length;i++){
  var type=Object.prototype.toString.call(arr[i]);
  //console.log(type);
  if(!obj[arr[i]+type]){
    temp.push(arr[i]);
    obj[arr[i]+type]=true;
  }
}
console.log(temp);

4.先排序再去重

var arr=[1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false];
arr.sort();
//console.log(arr);
var temp=[];
while(arr.length>0){
  if(Object.is(arr[0],arr[1])){
    arr.shift();
  }else{
    temp.push(arr.shift());
  }
}
console.log(temp);

5.for in和includes

var arr=[1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false];
var temp=[];
for(var i=0;i<arr.length;i++){

  /*ES7中新增includes()方法,用于查找数组总是否包含某个元素,返回布尔值,接受两个参数 要查找的元素和 查找的起始位置*/
  if(!temp.includes(arr[i])){
    temp.push(arr[i]);
  }
}
console.log(temp);

参考:http://blog.csdn.net/u012657197/article/details/77129594

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值