前端處理數據的時候,常見的數組對象,合並並且去重,兩個數據如下:
let json1=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:3,name:"ccc"}, ] let json2=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:4,name:"ddd"}, ]
方法一:
雙循環,遍歷添加
for (var obj in json1){//臨時選擇數據
var includeThis = false;
for(var dbj in json2){ //右側table里的數據
if(json1[obj].id==json2[dbj].id){
includeThis=true;
}
}
if(includeThis==false){
json.push(storageArea[obj]);//把當前臨時數據的這一條放到右側table的數據里
}
}
也可以先合並在去重
let json = json1.concat(json2);
//兩個數組對象合並
let newJson = []; //盛放去重后數據的新數組
for(item1 of json){ //循環json數組對象的內
let flag = true; //建立標記,判斷數據是否重復,true為不重復
for(item2 of newJson){ //循環新數組的內容
if(item1.id==item2.id){ //讓json數組對象的內容與新數組的內容作比較,相同的話,改變標記為false
flag = false;
}
}
if(flag){ //判斷是否重復
newJson.push(item1); //不重復的放入新數組。 新數組的內容會繼續進行上邊的循環。
}
}
console.log("newJson",newJson);
方法二 javascript 數組的高階函數reduce() 方法接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。
單個數組對象去重 let b = [{ id: '4', result: '第三' }, { id: '2', result: '第四' }, { id: '2', result: '第二' }] let d = [] let hash = {} d = b.reduce((item, next) => { hash[next.id] ? '' : hash[next.id] = true && item.push(next) return item }, []) console.log(d, '看看看')
用上面的兩個數組對象來實現
多個數組對象去重
let newDatas = [...this.json1, ...this.json2]; let d = [] let hash = {} d = newDatas.reduce((item, next) => { hash[next.id] ? '' : hash[next.id] = true && item.push(next) return item }, []) console.log(d);