我有两个 json 数组,例如
var json1 = [{id:1, name: 'xxx' ...}]
var json2 = [{id:2, name: 'xyz' ...}]
我希望它们合并为单个数组
var finalObj = [{id:1, name: 'xxx' ...},{id:2, name: 'xyz' ...}]
我有两个 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);
第一次出现时,“合并”这个词让人认为您需要使用.extend,这是“合并”JSON 对象的正确 jQuery 方式。但是,$.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);
您还可以将它用于这种类型的多个数组对象,例如:
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);
您可以使用 Es 6 新功能执行此操作:
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' } ]
或者您可以在两个 json 数组之间放置额外的字符串或任何内容:
var json3 = [...json1 ,"test", ...json2];
// output should like this : [ { id: 1, name: 'xxx', ocupation: 'Doctor' },
'test',
{ id: 2, name: 'xyz', ocupation: 'SE' } ]