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/