Объединение двух массивов 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' ...}]


в отношении

947   10  

10 ответов:

вы хотите concat метод.

var finalObj = json1.concat(json2);

при первом появлении слово "merg" заставляет думать, что вам нужно использовать .расширить, что является правильным способом 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>

jsFiddle

вы можете попробовать объединить

var finalObj = $.merge(json1, json2);

Так как вы используете jQuery. Как насчет jQuery.метод extend ()?

http://api.jquery.com/jQuery.extend/

описание: объединить содержимое двух или более объектов вместе в первый объект.

возможно, вы можете использовать синтаксис массива javascript:

var finalObj =[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' } ]

вы можете достичь этого с помощью Лодашь

вы можете использовать новый оператор JS spread, если используете es6:

var json1 = [{id:1, name: 'xxx'}]
var json2 = [{id:2, name: 'xyz'}]
var finalObj = [...json1, ...json2]

console.log(finalObj)

попробуйте код ниже, используя метод расширения 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);

Comments

    Ничего не найдено.