节点如何将阵列添加到阵列中

时间:2019-02-28 23:16:29

标签: javascript arrays node.js

我如何将一个数组推入一个现存的数组?

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也可以。

对我来说,将数组添加到另一个数组中似乎有问题

我认为我做错了...

2 个答案:

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