我有两个JSON对象,它们是Youtube API响应。
我想将第二个JSON(源)的某个部分附加到第一个JSON(目的地)的特定位置,最后有一个合并的JSON发送到视图。
我试过这样做:
var merged = Object.keys(source).forEach(function(key) {
destination.items[key].contentDetails = source[key].items[key].contentDetails;
})
它们都包含相同数量的项目集,所以我在source循环中使用相同的索引键作为目的地,并将每个项目都附加到目的地JSON中。destination.items[key].contentDetails
是一个有效的引用,在控制台中返回正确的值,但在此循环中它是未定义的。我做错了什么?我不太确定这种做法这样的任务,所以我会非常感谢一些方向。
1条答案
按热度按时间lbsnaicq1#
您遇到的问题是因为
forEach
函数返回undefined
。forEach
方法不会创建新对象;它用于迭代数组,不返回任何值。所以,当你试图将forEach
的结果赋值给merged
时,它变成了undefined
。要合并两个JSON对象,可以使用
for
循环或其他方法,如map
。下面是代码的修改版本,使用for
循环合并两个对象:这段代码遍历
source
对象中的键,检查它们是否存在于destination
对象中,然后相应地合并contentDetails。