1. 程式人生 > >js讓一個物件 陣列,去重

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]