将两个json / javascript数组合并到一个数组中
我有两个json数组
var json1 = [{id:1, name: 'xxx' ...}] var json2 = [{id:2, name: 'xyz' ...}]
我想他们合并到单个数组
var finalObj = [{id:1, name: 'xxx' ...},{id:2, name: 'xyz' ...}]
问候
你想要concat
方法。
var finalObj = json1.concat(json2);
第一次出现时,单词“merg”导致人们认为你需要使用.extend ,这是正确的jQuery方法来“合并”JSON对象。 但是, $.extend(true, {}, json1, json2);
将导致共享相同键名的所有值被参数中提供的最新值覆盖。 正如你的问题的回顾显示,这是不受欢迎的。
你所寻求的是一个简单的JavaScript函数,称为.concat 。 这将工作如下:
var finalObj = json1.concat(json2);
虽然这不是一个原生的jQuery函数,但您可以轻松将其添加到jQuery库中,以便将来使用,如下所示:
;(function($) { if (!$.concat) { $.extend({ concat: function() { return Array.prototype.concat.apply([], arguments); } }); } })(jQuery);
然后按照需要回想一下:
var finalObj = $.concat(json1, json2);
你也可以用它来为这个types的多个数组对象使用类似的:
var finalObj = $.concat(json1, json2, json3, json4, json5, ....);
如果你真的想要它的jQuery风格和非常短而甜(缩小)
;(function(a){a.concat||a.extend({concat:function(){return Array.prototype.concat.apply([],arguments);}})})(jQuery);
;(function($){$.concat||$.extend({concat:function(){return Array.prototype.concat.apply([],arguments);}})})(jQuery); $(function() { var json1 = [{id:1, name: 'xxx'}], json2 = [{id:2, name: 'xyz'}], json3 = [{id:3, name: 'xyy'}], json4 = [{id:4, name: 'xzy'}], json5 = [{id:5, name: 'zxy'}]; console.log(Array(10).join('-')+'(json1, json2, json3)'+Array(10).join('-')); console.log($.concat(json1, json2, json3)); console.log(Array(10).join('-')+'(json1, json2, json3, json4, json5)'+Array(10).join('-')); console.log($.concat(json1, json2, json3, json4, json5)); console.log(Array(10).join('-')+'(json4, json1, json2, json5)'+Array(10).join('-')); console.log($.concat(json4, json1, json2, json5)); });
center { padding: 3em; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <center>See Console Log</center>
你可以尝试合并
var finalObj = $.merge(json1, json2);
也许,你可以使用javascript的数组语法:
var finalObj =[json1 , json2]
您可以使用Es 6新function来做到这一点:
var json1 = [{id:1, name: 'xxx' , ocupation : 'Doctor' }]; var json2 = [{id:2, name: 'xyz' ,ocupation : 'SE'}]; var combineJsonArray = [...json1 , ...json2]; //output should like this [ { id: 1, name: 'xxx', ocupation: 'Doctor' }, { id: 2, name: 'xyz', ocupation: 'SE' } ]
或者你可以把额外的string或任何两个JSON数组之间:
var json3 = [...json1 ,"test", ...json2]; // output should like this : [ { id: 1, name: 'xxx', ocupation: 'Doctor' }, 'test', { id: 2, name: 'xyz', ocupation: 'SE' } ]
试试下面的代码,使用jQuery扩展方法:
var json1 = {"name":"ramesh","age":"12"}; var json2 = {"member":"true"}; document.write(JSON.stringify($.extend(true,{},json1,json2)))
作品良好感谢上述结果….
var json1=["Chennai","Bangalore"]; var json2=["TamilNadu","Karanataka"]; finaljson=json1.concat(json2);