推入数组内的第一个对象

时间:2019-03-05 13:57:05

标签: javascript

我有一个这样的对象数组

[ { name: 'name1' },
  { name: 'name2' },
  { name: 'name3' } ]

我想像这样将每个对象推入其中的每个对象:

[ { name: 'name1', item: [{ type: type1 }] },
  { name: 'name2', item: [{ type: type2 }] },
  { name: 'name3', item: [{ type: type3 }] } ]

当我尝试做array.push({item: [{}]})时,我得到这样的结果:

[ { name: 'name1' },
  { item: [ {} ] },
  { name: 'name2' },
  { item: [ {} ] },
  { name: 'name3' },
  { item: [ {} ] } ]

5 个答案:

答案 0 :(得分:1)

const arr1 = [ 
    { name: 'name1', item: [] },
    { name: 'name2', item: [] },
    { name: 'name3', item: [] } 
];

const objects = [
        { itemId: 1 },
        { itemId: 2 },
        { itemId: 3 }
];

for (let i = 0; i < arr1.length; i++) {
    const element = arr1[i];
    element.item.push(objects[i]);
}

console.log(arr1);

答案 1 :(得分:0)

首先必须将item初始化为数组:

if (!array[0].item) {
    array[0].item = [];
}

然后推送:

array[0].item.push({ type: type1 });

[0]代替您需要的索引。我不知道您有什么逻辑。可能以某种形式的循环array[i]

答案 2 :(得分:0)

迭代数组并按所需方式修改对象。

myArray.forEach((obj, idx) => {

   //You have each object here
   obj.item = [{ type: 'type' + idx }]
})

还要查看诸如findsomeevery之类的数组函数

答案 3 :(得分:0)

您应该迭代并在JSON对象中添加键值对

array.forEach((element)=>{
   element[0]['item'] = [{}] // here you can add your key-value pair
});

答案 4 :(得分:0)

如果您需要一个新的阵列,这也可以工作

let ar=[ 
  { name: 'name1' },
  { name: 'name2' },
  { name: 'name3' } ];
  
let modArray = ar.map((x,i)=>{
  return {item:[{ type: 'type' + (i+1) }],...x}
});

console.log(modArray);