我有 2 個陣列。我需要將arraySecondary 中具有相同id 的所有物件移動到arrayPrimary 中具有相同id 的物件內的陣列中。
例子:
const arrayPrimary = [
{ "id": "1", "location": "France", "price": "12,3" },
{ "id": "2", "location": "Germany", "price": "12,0" },
{ "id": "3", "location": "USA", "price": "10" },
{ "id": "4", "location": "Italy", "price": "16" },
];
const arraySecondary = [
{ "id": "1", "name": "phil", "location": "New York", "price": "1,3", "dd": "lql" },
{ "id": "2", "location": "Paris", "dd": "lql" },
{ "id": "3", "location": "Egypt" },
{ "id": "2", "name": "joe", "location": "London" },
{ "id": "1", "location": "location", "name": "april" },
{ "id": "2", "name": "mei", "location": "Barcelona" },
];
預期結果:
[
{
id: 1,
location: "France",
price: "12,3",
area: [
{ id: 1, location: "location", name: "april" },
{ id: 1, name: "phil", location: "New York", price: "1,3", dd: "lql" },
],
},
{
id: 2,
location: "Germany",
price: "12,0",
area: [
{ id: 2, location: "Paris", dd: "lql" },
{ id: 2, name: "joe", location: "London" },
{ id: 2, name: "mei", location: "Barcelona" },
],
},
{ id: 3, location: "USA", price: 10, area: [{ id: 3, location: "Egypt" }] },
{ id: 4, location: "Italy", price: 16 },
];
//or json
首先,我向 arrayPrimary 中的每個物件添加一個空陣列。
arrayPrimary.map((v) => ({ ...v, area: [] }));
之后,我通過 id 過濾 arraySecondary,并將所有結果推送到 arrayPrimary 中每個物件的區域陣列中。但在這里我卡住了。
console.log(
arrayPrimary.forEach((main) =>
main.area.push(arraySecondary.filter((items) => items.id === main.id))
)
);
第二個想法是首先按 id 對 arraySecondary 中的每個物件進行排序,然后將其推送到 arrayPrimary 中的空白區域陣列中
let op = arrayItems.reduce((op,inp) => {
op[inp.id] = op[inp.id] || []
op[inp.id].push(inp)
return op
},{})
console.log(op)
這就是我堅持這兩種想法的地方。
uj5u.com熱心網友回復:
像這樣的東西?
const arrayPrimary = [
{ "id": "1", "location": "France", "price": "12,3" },
{ "id": "2", "location": "Germany", "price": "12,0" },
{ "id": "3", "location": "USA", "price": "10" },
{ "id": "4", "location": "Italy", "price": "16" },
];
const arraySecondary = [
{ "id": "1", "name": "phil", "location": "New York", "price": "1,3", "dd": "lql" },
{ "id": "2", "location": "Paris", "dd": "lql" },
{ "id": "3", "location": "Egypt" },
{ "id": "2", "name": "joe", "location": "London" },
{ "id": "1", "location": "location", "name": "april" },
{ "id": "2", "name": "mei", "location": "Barcelona" },
];
const composed = arrayPrimary.map(d => {
return {
...d,
area: arraySecondary.filter(({id}) => d.id === id)
}
})
console.log(composed)
uj5u.com熱心網友回復:
你可以這樣做:
const arrayResut=arrayPrimary.map(primaryElement=>{
primaryElement.area=arraySecondary.filter(secondaryElement=>secondaryElement.id==primaryElement.id);
return primaryElement;
})
這將創建 的副本arrayPrimary,并在此程序中添加一個鍵,如果元素的 id等于元素的 id,則該area鍵將包含 的所有元素。arraySecondaryarraySecondaryarrayPrimary
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463843.html
標籤:javascript 数组 json
下一篇:集群對彈性堆疊重要嗎?
