数组去重方法

1.利用hasOwnProperty

function unique(arr) {
    var obj = {};
    return arr.filter(function(item, index, arr){
        return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
    })
}
var arr = [{name:'whl',age:'18'},{name:'whl'}]
console.log(unique(arr)) 
//[{name: "whl", age: "18"}]

2.利用reduce

ie9 以下得浏览器不兼容

routeTable = [{name:'whl',station_num_id:'0000'},{name:'wh1l',station_num_id:'0000'},1,1,true,NaN,NaN,true]
let obj = {}
routeTable = routeTable.reduce((cur, next) => {
					obj[next.station_num_id] ? "" : obj[next.station_num_id] = true && cur.push(next);
					return cur;
				}, []) 
console.log(routeTable)
//[{name:'whl',station_num_id:'0000'},1]

3.[…new Set(arr)]

不能筛选数组对象

routeTable = [{name:'whl',station_num_id:'0000'},{name:'wh1l',station_num_id:'0000'},1,1,true,NaN,NaN,true]

console.log([...new Set(routeTable)] )
//[{name: "whl", station_num_id: "0000"},{name: "wh1l", station_num_id: "0000"},1,true,NaN]

4.利用Map数据结构去重

不能筛选数组对象

function arrayNonRepeatfy(arr) {
  let map = new Map();
  let array = new Array();  // 数组用于返回结果
  for (let i = 0; i < arr.length; i++) {
    if(map .has(arr[i])) {  // 如果有该key值
      map .set(arr[i], true); 
    } else { 
      map .set(arr[i], false);   // 如果没有该key值
      array .push(arr[i]);
    }
  } 
  return array ;
}
 var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{name:'whl',age:18},{name:'whl',age:18}];
    console.log(unique(arr))
    // [1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}, {…}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值