首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将两个json/javascript数组合并为一个数组

将两个json/javascript数组合并为一个数组
EN

Stack Overflow用户
提问于 2012-04-30 21:52:06
回答 7查看 198.3K关注 0票数 71

我有两个json数组,比如

代码语言:javascript
复制
var json1 = [{id:1, name: 'xxx' ...}]
var json2 = [{id:2, name: 'xyz' ...}]

我希望它们合并到单个数组中

代码语言:javascript
复制
var finalObj = [{id:1, name: 'xxx' ...},{id:2, name: 'xyz' ...}]
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-04-30 21:55:09

您需要concat方法。

代码语言:javascript
复制
var finalObj = json1.concat(json2);
票数 121
EN

Stack Overflow用户

发布于 2012-04-30 21:54:32

第一次出现时,单词"merg“会让人认为您需要使用.extend,这是”合并“JSON对象的正确jQuery方式。但是,$.extend(true, {}, json1, json2);将导致所有共享相同键名的值被参数中提供的最新值覆盖。正如对您的问题的回顾所示,这是不受欢迎的。

您要寻找的是一个简单的javascript函数,称为.concat。它的工作原理如下:

代码语言:javascript
复制
var finalObj = json1.concat(json2);

虽然这不是本机jQuery函数,但您可以轻松地将其添加到jQuery库中,以便将来简单使用,如下所示:

代码语言:javascript
复制
;(function($) {
    if (!$.concat) {
        $.extend({
            concat: function() {
                return Array.prototype.concat.apply([], arguments);
            }
        });
    }
})(jQuery);

然后根据需要调用它,如下所示:

代码语言:javascript
复制
var finalObj = $.concat(json1, json2);

还可以将其用于此类型的多个数组对象,如下所示:

代码语言:javascript
复制
var finalObj = $.concat(json1, json2, json3, json4, json5, ....);

如果你真的想要它的jQuery风格和非常简短和甜蜜(也就是缩小)

代码语言:javascript
复制
;(function(a){a.concat||a.extend({concat:function(){return Array.prototype.concat.apply([],arguments);}})})(jQuery);

代码语言:javascript
复制
;(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));
});
代码语言:javascript
复制
center { padding: 3em; }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<center>See Console Log</center>

jsFiddle

票数 37
EN

Stack Overflow用户

发布于 2012-04-30 21:55:54

您可以尝试合并

代码语言:javascript
复制
var finalObj = $.merge(json1, json2);
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10384845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档