Beim ersten Auftreten, Das Wort "merg" führt zu der Annahme, dass Sie .extend verwenden müssen, was die richtige jQuery-Methode ist, um JSON-Objekte zu "verschmelzen". $.extend(true, {}, json1, json2);
wird jedoch dazu führen, dass alle Werte, die denselben Schlüsselnamen verwenden, von den zuletzt in den Parametern angegebenen Schlüsseln überschrieben werden. Wie die Überprüfung Ihrer Frage zeigt, ist dies unerwünscht.
Was Sie suchen, ist eine einfache JavaScript-Funktion bekannt als .concat. Welche wie funktionieren würde:
var finalObj = json1.concat(json2);
Zwar ist dies nicht eine native Funktion jQuery ist, könnten Sie leicht in die für einfache zukünftige Verwendung jQuery-Bibliothek hinzufügen, wie folgt:
;(function($) {
if (!$.concat) {
$.extend({
concat: function() {
return Array.prototype.concat.apply([], arguments);
}
});
}
})(jQuery);
Und dann erinnern, wie gewünscht wie:
var finalObj = $.concat(json1, json2);
Sie können es auch verwenden, für mehrere Array-Objekte dieses Typs mit einem wie:
var finalObj = $.concat(json1, json2, json3, json4, json5, ....);
Und wenn Sie wirklich wollen, dass es jQuery Stil und sehr kurz und süß (aka minimierte)
;(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>
jsFiddle
seine Dynamik. also kann ich den Index nicht benutzen. Ich brauche eine Funktion, die n Objekte in das endgültige Objekt zusammenführen kann. –
Das sind keine JSON-Objekte, nur Arrays. – Quentin
@MurtazaHussain Wenn Ihr Code wie oben gezeigt ist, ist mein Kommentar richtig. –