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]

猜你喜欢

转载自blog.csdn.net/dxj124/article/details/82787753