Javascript forEach不是对象合并后的函数

Javascript forEach不是对象合并后的函数,javascript,Javascript,我根据创建了这个方法,我将它修改为递归的。这似乎可行,但我遇到的问题是,我得到了一个错误,上面说: 未捕获类型错误:this.config.routes.forEach不是函数 我正在合并以下两个对象: { maxLoadLoop: 5, author: {color: "red"} } 这个(json转换为object): 这两个似乎融合得很好,只是我得到了上面提到的错误…我更改了第2行: var obj3 = (!obj1 && Array.isArray(

我根据创建了这个方法,我将它修改为递归的。这似乎可行,但我遇到的问题是,我得到了一个错误,上面说:

未捕获类型错误:this.config.routes.forEach不是函数

我正在合并以下两个对象:

{
    maxLoadLoop: 5,
    author: {color: "red"}
}
这个(json转换为object):

这两个似乎融合得很好,只是我得到了上面提到的错误…

我更改了第2行:

var obj3 = (!obj1 && Array.isArray(obj2)) ? [] : {};
如果obj1不存在且obj2为数组,则输出也应为数组


如果要处理obj1和obj2都是数组的情况,则需要做更多的工作。

Setting
obj3={}
意味着您将丢失任何
数组。原型
方法,因为它不是数组。预期的最终结果是什么?@Phil我该怎么做才能保留这些信息?您的代码不会在任何地方调用
。forEach
。将
obj3
实例化为与
obj1
obj2
类型相同的对象。除非您告诉我们什么是
obj1
obj2
,否则您可能会得到一个非常具体的答案@zerkms:大概OP正在使用某种web框架,它在某处调用
this.config.routes.forEach
;OP将
this.config.routes
指定为两个现有路由集合的合并。在本例中可能会起作用,因为数据似乎仅限于没有自定义原型的基本数据类型。但值得注意的是,如果允许的话,它将失败。
{
    "author": {
        "name": "Me",
        "email": "my email"
    },
    "routes": [
        {
            "route": "/home",
            "template": "/templates/home.html",
            "default": true
        },
        {
            "route": "/games",
            "template": "/templates/games.html"
        }
    ]
}
var obj3 = (!obj1 && Array.isArray(obj2)) ? [] : {};