所以我有兩個物件陣列:
var arr1 = [{id:1, name:John }{id:2, name:Adam }]
var arr2 = [{id:1, address:NY, number: 200}, {id:2, address:LA, number: 300}]
預期的結果是:
var newArr = [{id:1, name:John, address:NY, number: 200 }, { id:2, name:Adam, address:LA, number: 300}]
這只是數千個資料中的兩個示例,我嘗試通過兩個陣列進行映射并手動插入它們,但這總是會導致超時,因為我認為回圈在后端服務器上非常繁重。有沒有一種有效的方法來執行這樣的操作或像 lodash 這樣的包中的輕量級解決方案來實作這一點?
uj5u.com熱心網友回復:
除非您使用本機模塊,否則 lodash 和其他包也會在內部回圈這些值。
假設您正在使用id
將元素組合在一起,這可能就是您想要的
function mergeArrays(array1, array2) {
const groups = {};
for (const array of [array1, array2]) {
for (const elem of array) {
if (!groups[elem.id]) {
groups[elem.id] = {};
}
Object.assign(groups[elem.id], elem);
}
}
return Object.values(groups);
}
var arr1 = [{id:1, name:'John' }, {id:2, name:'Adam' }];
var arr2 = [{id:1, address:'NY', number: 200}, {id:2, address:'LA', number: 300}]
console.log(mergeArrays(arr1, arr2));
uj5u.com熱心網友回復:
如果可以通過核心實作,為什么要使用 Librriejavascript
var a1 = [{id:1, name:'John' },{id:2, name:'Adam' }, {id: 3, name: 'mohit'}]
var a2 = [{id:1, address:'NY', number: 200}, {id:2, address:'LA', number: 300}, {id: 4, name:'dj', value: 'pj'}, {id: 5}]
let a3 = [...a1, ...a2].reduce((acc, x) => {
acc[x.id] = Object.assign(acc[x.id] || {}, x);
return acc;
}, {});
console.log('your need', Object.values(a3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494011.html
標籤:javascript json 算法 服务器 后端
上一篇:物件空檢查不起作用并更改邏輯
下一篇:將JS映射重寫為forEach