我有两个具有相同结构的JSON对象,我想使用Javascript将它们连接在一起.是否有捷径可寻?
根据您在评论中的描述,您只需执行数组连接:
var jsonArray1 = [{'name': "doug", 'id':5}, {'name': "dofug", 'id':23}]; var jsonArray2 = [{'name': "goud", 'id':1}, {'name': "doaaug", 'id':52}]; jsonArray1 = jsonArray1.concat(jsonArray2); // jsonArray1 = [{'name': "doug", 'id':5}, {'name': "dofug", 'id':23}, //{'name': "goud", 'id':1}, {'name': "doaaug", 'id':52}];
如果您更愿意复制属性:
var json1 = { value1: '1', value2: '2' }; var json2 = { value2: '4', value3: '3' }; function jsonConcat(o1, o2) { for (var key in o2) { o1[key] = o2[key]; } return o1; } var output = {}; output = jsonConcat(output, json1); output = jsonConcat(output, json2);
上面代码的输出是{ value1: '1', value2: '4', value3: '3' }
您可以使用jquery extend方法.
例:
o1 = {"foo":"bar", "data":{"id":"1"}}; o2 = {"x":"y"}; sum = $.extend(o1, o2);
结果:
sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"}
实际的方法是使用JS Object.assign.
Object.assign(target, ...sources)
MDN链接
还有另一个针对ES7提出的对象扩展运算符,可以与Babel插件一起使用.
Obj = {...sourceObj1, ...sourceObj2}
一种解决方案是使用列表/数组:
var first_json = {"name":"joe", "age":27}; var second_json = {"name":"james", "age":32}; var jsons = new Array(); jsons.push(first_json); jsons.push(second_json);
结果
jsons = [ {"name":"joe", "age":27}, {"name":"james", "age":32} ]
您可以使用Object.assign()方法。Object.assign()方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。[1]
var o1 = { a: 1 }, o2 = { b: 2 }, o3 = { c: 3 }; var obj = Object.assign(o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 }