js让一个包含对象的数组去重

方法一:

一个数组中的每一项都是对象,现在需要将这个对象中id相同的只保留一个,即根据id去重,通过以上方法可实现

var person = [
    { id: 0, name: "小明" },
    { id: 1, name: "小张" },
    { id: 2, name: "小李" },
    { id: 3, name: "小孙" },
    { id: 1, name: "小周" },
    { id: 2, name: "小陈" },
];
 
var obj = {};
 
person = person.reduce((cur, next) => {
    obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
    return cur;
}, []) //设置cur默认类型为数组,并且初始值为空的数组
console.log(person);


方法二 :

同上的情况,遍历数组每一项,判断如果 TeamA和TeamB完全一样,则去重,去掉一个,可以有两种方法

var arr = [{
    TeamA: '01',
    TeamB: '02',
    value: '乐乐'
}, {
    TeamA: '01',
    TeamB: '02',
    value: '博博'
}, {
    TeamA: '01',
    TeamB: '03',
    value: '淘淘'
}, {
    TeamA: '03',
    TeamB: '04',
    value: '哈哈'
}, {
    TeamA: '03',
    TeamB: '05',
    value: '乐乐'
}, {
    TeamA: '02',
    TeamB: '05',
    value: '乐乐'
}, {
    TeamA: '03',
    TeamB: '06',
    value: '乐乐'
}];
 
 
//方法一:
 
var obj = {};
var newArr = [];
arr.forEach(item => {
    if (!obj[item.TeamA + item.TeamB]) {
        obj[item.TeamA + item.TeamB] = 1
        newArr.push(item)
    }
})
console.log(newArr)
 
 
 
//方法二:
 
var allArr=[];
 for(var i=0;i<arr.length;i++){
  var flag = true;
  for(var j=0;j<allArr.length;j++){
    if(arr[i].TeamA == allArr[j].TeamA && arr[i].TeamB == allArr[j].TeamB){
      flag = false;
    };
  }; 
  if(flag){
    allArr.push(arr[i]);
  };
};
console.log(allArr)
结果应该是6个

普通数组:

let arr = [1, 2, 2, 3];
let set = new Set(arr);
let newArr = Array.from(set); // Array.from方法可以将 Set 结构转为数组。
 
console.log(newArr); // [1, 2, 3]
也可以改写成以下方式

var newarr = [1, 2, 2, 3];
 
 var arr = Array.from(new Set(newarr));
 
//拿到的这个arr就是去重后的结果为[1,2,3]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值