如何合并两个嵌套的javascript对象?
我目前正在使用以下代码:如何合并两个嵌套的javascript对象?,javascript,jquery,object,merge,Javascript,Jquery,Object,Merge,我目前正在使用以下代码: function mergeFaculty(json){ tempList = $.extend(tempList, json); console.log(JSON.stringify(tempList)); } 但是,它不起作用 对象如下: {"modulos":{"id":"1","name":" Usuarios","paginas":{"id":"1","name":" Listado Usuarios","facultades":{"id":
function mergeFaculty(json){
tempList = $.extend(tempList, json);
console.log(JSON.stringify(tempList));
}
但是,它不起作用
对象如下:
{"modulos":{"id":"1","name":" Usuarios","paginas":{"id":"1","name":" Listado Usuarios","facultades":{"id":"1","name":" ver"}}}}
{"modulos":{"id":"1","name":" Usuarios","paginas":{"id":"1","name":" Listado Usuarios","facultades":{"id":"2","name":" editar"}}}}
知道它为什么不起作用吗 尝试将扩展函数更改为:
$.extend(true,templast,json)
,它应该允许深度合并尝试将扩展函数更改为:$.extend(true,templast,json)
,它应该允许深度合并首先,我认为您的对象结构有问题,因为您的facultades
键是一个对象而不是数组。如果希望在扩展后同时保存两个facultades
对象,则应使用数组
也就是说,它似乎是$。extend
甚至覆盖了数组,这意味着它将选择作为此函数参数传递的最新对象的数组。因此,这对您不好,因为数组仍将保存facultades
中的两个对象之一
要正确合并数组,我们可以使用$.merge
函数,但这只适用于数组。因为您手头有一个JSON对象,所以这不起作用
因此,我所做的只是编写自己的递归代码来利用这两个特性:深度复制扩展函数和数组中的合并函数
希望这对实现您的目标有用(注释中的解释):
var templast={“modulos”:{“id”:“1”,“name”:“Usuarios”,“paginas”:{“id”:“1”,“name”:“Listado Usuarios”,“facultades”:[{“id”:“1”,“name”:“ver”}}}}
var secondObject={“modulos”:{“id”:“1”,“name”:“Usuarios”,“paginas”:{“id”:“1”,“name”:“Listado Usuarios”,“facultades”:[{“id”:“2”,“name”:“editar”}}}}
//深延递归函数
函数deepExtend(firstObject、secondObject、tempObject){
tempObject=typeof tempObject==“未定义”?{}:tempObject;
//展平多维数组
函数展平(数组){
if(array.length){
返回数组.reduce(函数(上、下){
返回上一个concat(当前)
})
}
}
//迭代两个对象,扩展和合并它们
函数迭代对象(object1、object2){
var keys=Object.keys(object1);
对于(变量i=0;i 合并(第二对象)代码>首先,我认为您的对象结构有问题,因为您的facultades
键是一个对象而不是数组。如果希望在扩展后同时保存两个facultades
对象,则应使用数组
也就是说,它似乎是$。extend
甚至覆盖了数组,这意味着它将选择作为此函数参数传递的最新对象的数组。因此,这对您不好,因为数组仍将保存facultades
中的两个对象之一
要正确合并数组,我们可以使用$.merge
函数,但这只适用于数组。因为您手头有一个JSON对象,所以这不起作用
因此,我所做的只是编写自己的递归代码来利用这两个特性:深度复制扩展函数和数组中的合并函数
希望这对实现您的目标有用(注释中的解释):
var templast={“modulos”:{“id”:“1”,“name”:“Usuarios”,“paginas”:{“id”:“1”,“name”:“Listado Usuarios”,“facultades”:[{“id”:“1”,“name”:“ver”}}}}
var secondObject={“modulos”:{“id”:“1”,“name”:“Usuarios”,“paginas”:{“id”:“1”,“name”:“Listado Usuarios”,“facultades”:[{“id”:“2”,“name”:“editar”}}}}
//深延递归函数
函数deepExtend(firstObject、secondObject、tempObject){
tempObject=typeof tempObject==“未定义”?{}:tempObject;
//展平多维数组
函数展平(数组){
if(array.length){
返回数组.reduce(函数(上、下){
返回上一个concat(当前)
})
}
}
//迭代两个对象,扩展和合并它们
函数迭代对象(object1、object2){
var keys=Object.keys(object1);
对于(变量i=0;i