簡體   English   中英

將兩個 json/javascript 數組合並為一個數組

[英]Merge two json/javascript arrays in to one array

我有兩個 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>

js小提琴

你可以嘗試合並

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

由於您使用的是 jQuery。 jQuery.extend() 方法怎么樣?

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

描述:將兩個或多個對象的內容合並到第一個對象中。

您可以使用 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' } ]

也許,您可以使用 javascript 的數組語法:

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>

如果使用 es6,您可以使用新的 js 擴展運算符:

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

嘗試在Node Js上關注

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

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

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

試試下面的代碼,使用 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM