我有 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)
这就是我坚持这两种想法的地方。
像这样的东西?
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句