我如何将一个数组推入一个现存的数组?
Cases[caseid].items = itemscase;
那是我尝试过的。
我有一些“情况”
for(var c in Cases) {
对于每个个案,我想将不同的新“项目”推送到一个现存数组。
该数组如下所示:
'123':
[ { id: 123,
skus: [Array],
name: 'xyz',
img: '/public/images/cases/10018.png'}
现在我想像这样推一个新的数组(itemcase)
'123':
[ { id: 123,
skus: [Array],
name: 'xyz',
img: '/public/images/cases/10018.png'
items: [Array]}
数组itemscase是正确的并且可以正常工作,看起来像这样
[ { sku: 12345,
name:
'testname',
price: 15 }]
,但是由于某种原因,最后一次运行只会推到最后一个“案例”。 因此,如果我有10个“案例”,则只有最后一个案例才能获得所有项目。
还有更多代码。
for(var c in Cases) {
var caseid = Cases[c][0].id;
for(var i in itemsres) {
var item = itemsres[i];
itemscase.push({
sku: item.sku,
name: item.name
price: item.suggested_price_floor
});
}
Cases[caseid].items = itemscase;
}
itemsres也很好,创建itemcase也可以。
对我来说,将数组添加到另一个数组中似乎有问题
我认为我做错了...
答案 0 :(得分:0)
没有完整的代码很难测试,但是根据您的示例,我建议您尝试以下代码段:
Object.keys(Cases).forEach(id => {
Cases[id].forEach(caseItem => {
caseItem.items = itemsres.map(x => ({
sku: x.sku,
name: x.name,
price: x.suggested_price_floor,
}));
});
});
基本上,这里我遍历所有情况,当对象时使用Object.keys()
,在数组时使用.forEach()
。 Array.map()
函数可以完成您的(空数组+循环+推入)操作。
答案 1 :(得分:0)
此处,地图使用地图将items
添加到每个节点。
注意:您没有过滤要添加到哪里的项目,我怀疑您想添加与草图匹配的项目?
让我知道,我们可以进行正确的更改。
let Cases = [{
id: 123,
skus: [1, 2, 3],
name: 'xyz',
img: '/public/images/cases/10018.png'
},
{
id: 234,
skus: [4, 5, 6],
name: 'abc',
img: '/public/images/cases/10019.png'
}
];
let itemres = [{
sku: 12345,
name: 'testname',
price: 15
},
{
sku: 45677,
name: 'testname',
suggested_price_floor: 20
}
];
// add items to cases
Cases = Cases.map(c => {
c.items = itemres.map(i => {
return {
sku: i.sku,
name: i.name,
price: i.suggested_price_floor
};
})
return c;
});
console.log(Cases);