js讓一個物件 陣列,去重
阿新 • • 發佈:2018-11-08
方法一:
一個數組中的每一項都是物件,現在需要將這個物件中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]