Подтвердить что ты не робот

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

Привет

4b9b3361

Ответ 1

Вам нужен метод concat.

var finalObj = json1.concat(json2);

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Вы можете сделать это, используя новую функцию 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' } ]

Ответ 6

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

var finalObj =[json1 , json2]

Ответ 7

Вы можете достичь этого, используя функцию 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/[email protected]/lodash.min.js"></script>

Ответ 8

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

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

console.log(finalObj)

Ответ 9

попробуйте подписаться на Node Js

var data1 = {
title: "Siya CMS",
};

var data2 = {
        metaKeywords: "meta Keywords",
   };

var data = Object.assign(data1, data2);

Ответ 10

Попробуйте использовать код ниже, используя метод расширения jQuery:

var json1 = {"name":"ramesh","age":"12"};

var json2 = {"member":"true"};

document.write(JSON.stringify($.extend(true,{},json1,json2)))

Ответ 11

var json1=["Chennai","Bangalore"];
var json2=["TamilNadu","Karanataka"];

finaljson=json1.concat(json2);