Javascript 如何将新数组添加到另一个数组的特定对象中

Javascript 如何将新数组添加到另一个数组的特定对象中,javascript,angularjs,json,Javascript,Angularjs,Json,我试图找到答案,但没有成功 json数据的示例,假设它将命名为mainArray: [{ "id": 4455, "key1": 44, "key2": 55 }, { "id": 1122, "key1": 11, "key2": 22 }] [{ "nestedkey0": 'Value0', "nestedkey1": "Value1", "nestedkey2": "Value2" }, { "nestedkey0": "Value3", "

我试图找到答案,但没有成功

json数据的示例,假设它将命名为mainArray

[{
  "id": 4455,
  "key1": 44,
  "key2": 55
},
{
  "id": 1122,
  "key1": 11,
  "key2": 22
}]
[{
  "nestedkey0": 'Value0',
  "nestedkey1": "Value1",
  "nestedkey2": "Value2"
},
{
  "nestedkey0": "Value3",
  "nestedkey1": "Value4",
  "nestedkey2": "Value5"
}]
数据样本nestedArray需要添加到mainArray

[{
  "id": 4455,
  "key1": 44,
  "key2": 55
},
{
  "id": 1122,
  "key1": 11,
  "key2": 22
}]
[{
  "nestedkey0": 'Value0',
  "nestedkey1": "Value1",
  "nestedkey2": "Value2"
},
{
  "nestedkey0": "Value3",
  "nestedkey1": "Value4",
  "nestedkey2": "Value5"
}]
我们必须检查“id”键(在mainArray中)是否等于“specific id”变量:

 var specificId = 4455;
如果它们相等-我们需要将nestedArray添加到mainArray的对象中,作为包含对象列表的新键,因此返回的结果应如下所示:

[{
  "id": 4455,
  "newKey": [{
      "nestedkey0": 'Value0',
      "nestedkey1": "Value1",
      "nestedkey2": "Value2"
    },
    {
      "nestedkey0": "Value3",
      "nestedkey1": "Value4",
      "nestedkey2": "Value5"
    }];
  "key1": 44,
  "key2": 55
},
{
  "id": 1122,
  "key1": 11,
  "key2": 22
}];
以下是关于Plunker的代码示例:

我有一种感觉,这应该不难,但我在angularjs方面没有足够的经验来解决这个任务。 提前感谢您的回答

更新

更新了Plunker中的代码,答案为Nina Scholz(链接在上面)

还有另一个来自Halcyon的解决方案


谢谢大家的帮助

正如你所怀疑的,这并不难。最困难的部分是找到插入nastedArray的正确对象

var mainArray=[/**/];
var nastedArray=[/***/];
var指数=零;
var Specific ID=4459;
对于(var i=0;index==null,i
在纯Javascript中,由于可能存在短路,您可以使用它进行迭代

some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试

var mainArray=[{“id”:4455,“key1”:44,“key2”:55},{“id”:1122,“key1”:11,“key2”:22}],
nastedArray=[{“nastedkey0”:“Value0”,“nastedkey1”:“Value1”,“nastedkey2”:“Value2”},{“nastedkey0”:“Value3”,“nastedkey1”:“Value4”,“nastedkey2”:“Value5”}],
specific id=4455;
mainArray.some(函数(a){
如果(a.id==specific id){
a、 newKey=nastedArray;
返回true;
}
});
document.write(“”+JSON.stringify(mainArray,0,4)+“”)使用

如果数组中的元素满足提供的测试函数,find()方法将返回数组中的值。否则将返回undefined

(看一看这张照片!)

var mainArray=[{“id”:4455,“key1”:44,“key2”:55},{“id”:1122,“key1”:11,“key2”:22}],
nastedArray=[{“nastedkey0”:“Value0”,“nastedkey1”:“Value1”,“nastedkey2”:“Value2”},{“nastedkey0”:“Value3”,“nastedkey1”:“Value4”,“nastedkey2”:“Value5”}],
specific id=4455;
var item=mainArray.find(x=>x.id==specificId);
如果(项目!==未定义){
item.newKey=nastedArray;
}

log(JSON.stringify(mainArray))保持简单怎么样:)

for(变量i=0,i

将在所有浏览器中工作。

您尝试了哪些方法来解决此问题?向我们展示您尝试过的代码。我是angularjs和plane javascript的新手,所以我尝试在这里找到解决方案,但我做不到。我也尝试过push()方法,但它在mainArray中添加了类似嵌套数组的同级对象。我尝试过在这里使用您的答案,但看起来有语法错误。但是我想你的解决方案也应该是正确的。如果(index!==null){mainArray[index].newKey=nastedArray;}在你的代码中-newKey得到specifiid var的值。当我将specifiid替换为var nastedArray时,它创建了必需的数组。我很想投票支持你的解决方案,但这是我的第一个问题,所以我的rep=)很低,谢谢你的帮助!正如你所建议的,我已经查看了兼容性表,看起来IE不支持这种方法。不幸的是,它不适合我。但无论如何,谢谢你的回答!是的,它的支持有限,但是页面上提到的polyfil可以绕过它。然而,这只是另一种选择:)解决一个问题的不同方法-这是研究新工具/语言/等等的完美方法。。。对于您的解决方案,感谢您的帮助;)天哪,它看起来真的很漂亮很简单