当前位置:  开发笔记 > 编程语言 > 正文

Concat JSON对象

如何解决《ConcatJSON对象》经验,为你挑选了6个好方法。

我有两个具有相同结构的JSON对象,我想使用Javascript将它们连接在一起.是否有捷径可寻?



1> jacobangel..:

根据您在评论中的描述,您只需执行数组连接:

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}];


你对jsonArray1值的假设是不正确的.concat不修改原始数组,它返回一个新数组.
哎呀,你是对的.最近太多的PHP :)

2> 小智..:

如果您更愿意复制属性:

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' }


因为它们是对象,所以不需要返回它,因为对象是通过引用传递的

3> 小智..:

您可以使用jquery extend方法.

例:

o1 = {"foo":"bar", "data":{"id":"1"}};
o2 = {"x":"y"};
sum = $.extend(o1, o2);

结果:

sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"}



4> 小智..:

实际的方法是使用JS Object.assign.

Object.assign(target, ...sources)

MDN链接

还有另一个针对ES7提出的对象扩展运算符,可以与Babel插件一起使用.

 Obj = {...sourceObj1, ...sourceObj2}



5> Soviut..:

一种解决方案是使用列表/数组:

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}
]



6> J.C. Gras..:

您可以使用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 }

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有