javascript - 如何合并两个 JSON 对象数组 - 在 Javascript/jQuery 中删除重复项并保留顺序?

标签 javascript jquery json

jsfiddle 链接:http://jsfiddle.net/vN6fn/1/

假设我有这两个对象:

var obj1 = { data: [ 
                      {id:1, comment:"comment1"},
                      {id:2, comment:"comment2"},
                      {id:3, comment:"comment3"}
                   ] }

var obj2 = { data: [ 
                      {id:2, comment:"comment2"},
                      {id:3, comment:"comment3"},
                      {id:4, comment:"comment4"}
                   ] }

最终对象应该是这样的:

var final = { data: [ 
                      {id:1, comment:"comment1"},
                      {id:2, comment:"comment2"},
                      {id:3, comment:"comment3"},
                      {id:4, comment:"comment4"}
                   ] }

这里有一些需要考虑的事情:

  • obj1 和 obj2 可能重复也可能不重复

$.extend() 替换对象,$.merge() 不删除重复项(我知道我可以做循环,但我正在寻找更好的方法)。

最佳答案

您可以使用 $.merge 然后遍历并删除重复项,然后对其进行排序。

$.merge(obj1.data, obj2.data);

var existingIDs = [];
obj1.data = $.grep(obj1.data, function(v) {
    if ($.inArray(v.id, existingIDs) !== -1) {
        return false;
    }
    else {
        existingIDs.push(v.id);
        return true;
    }
});

obj1.data.sort(function(a, b) {
    var akey = a.id, bkey = b.id;
    if(akey > bkey) return 1;
    if(akey < bkey) return -1;
    return 0;
});

关于javascript - 如何合并两个 JSON 对象数组 - 在 Javascript/jQuery 中删除重复项并保留顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134649/

相关文章:

javascript - jquery - 使用 PHP 自动完成

javascript - 仅对父元素实现 css

c# - Ubuntu Linux 上的 JSON.NET

javascript - 函数调用在我的页面中不起作用

javascript - 下划线模板未获取值?

javascript - 使用 CSS 和 JS 在 HTML5 中拖放

javascript - 如何在每个产品的 foreach 循环中单独应用评级系统?

c - 读取 json 字符串时出现段错误

javascript - 哪个现代 JS 框架允许我使用旧的 XML API?

javascript - 如何将快速路由处理传递给下一个中间件并破坏当前的代码块?