给定javascript中的一组字典,我想合并它们,这样它们就不会包含任何重复项.举个例子
jsons1 = [{"a": "xyz"}, {"a": 12}]
jsons2 = [{"a": "xyz"}, {"a", 13}]
我想返回一个新数组,在合并时删除重复项
jsons3 = [{"a": "xyz"}, {"a": 12}, {"a": 13}]
秩序并不重要
我就是这么做的:
let jsons1 = [
{
"a": "xyz"
},
{
"a": 4
},
{
"a": 1
},
]
let jsons2 = [
{
"a": "xyz"
},
{
"a": 4
},
{
"a": 6
},
]
const val = [jsons1, jsons2]
let filtered = []
for(json of val) {
for(obj of json) {
let match = false;
for(dict of filtered) {
if(JSON.stringify(dict) === JSON.stringify(obj)) {
match = true;
break
}
}
if(match == true) {
continue
}
filtered.push(obj)
}
}
console.log(filtered)
https://jsfiddle.net/awb6qnzo/6/
基本上,我创建了一个名为filtered
的新数组,然后遍历每个jsonsarray.然后,我迭代过滤以判断obj是否已经在其中.
虽然有效,但效率极低.有没有更简单的方法?
编辑:将问题更改为特定值,因为前者显然不可能
给定javascript中的一组字典,我想合并它们,这样它们就不包含任何重复项(在键"id"上).例如.
jsons1 = [{"id": 1}, {"id": 12}]
jsons2 = [{"id": 1}, {"id": 3}]
我想返回一个新数组,在合并时删除重复项
jsons3 = [{"id": 1}, {"id": 3}, {"id": 12}]