我有两个 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);
json1
е’Ңjson2
йғҪжҳҜж•°з»„пјҒпјҲжҜҸдёӘж•°з»„еҸӘжңүдёҖдёӘжҲҗе‘ҳпјҢиҜҘжҲҗе‘ҳжҳҜдёҖдёӘеҜ№иұЎпјү - Quentin初看,“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);
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>
concat
是正确的选择。 - Vojtavar finalObj = [].concat(json1, json2, json3, json4, json5, ....);
。 - Vojta你可以尝试使用合并函数
var finalObj = $.merge(json1, json2);
既然你在使用jQuery,那么jQuery.extend()方法怎么样?
将两个或多个对象的内容合并到第一个对象中。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' } ]
var json1 = [{id:1, name: 'xxx'}]
var json2 = [{id:2, name: 'xyz'}]
var finalObj = [...json1, ...json2]
console.log(finalObj)
var finalObj =[json1 , json2]
您可以使用Lodash的_.merge
函数来实现此操作。
var json1 = [{id:1, name: 'xxx'}];
var json2 = [{id:2, name: 'xyz'}];
var merged = _.merge(_.keyBy(json1, 'id'), _.keyBy(json2, 'id'));
var finalObj = _.values(merged);
console.log(finalObj);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
尝试使用jQuery extend方法下面的代码:
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);
[ { "id": 1, "name": 6 } ]
是一个正常的 JSON 示例。 - Royi Namir