數組對象的合並去重,常用方法


前端處理數據的時候,常見的數組對象,合並並且去重,兩個數據如下:

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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM