我有两个带有相同对象的json数组,我想要的是从这两个json中得到一个不包含重复值的json,例如这是我的json:
json1=["one","two"];
json2=["one","two","three","four"];
结果必须是:
result=["three","four"]
你知道怎么做吗,谢谢
发布于 2018-05-26 05:13:04
function myFilter(arraySmall, arrayBig){
var result = [];
for (var i = 0; i < arrayBig.length; i++) {
if (arraySmall.indexOf(arrayBig[i]) === -1){ //ie. if item not exists in arraySmall
result.push(arrayBig[i]);
}
}
return result;
}
你可以直接调用myFilter(json1, json2);
发布于 2018-05-26 05:04:43
使用reduce和filter函数的解决方案:
const json1 = ["one","two"];
const json2 = ["one","two","three", "four"];
const result = json2
.reduce((acc, cur) => acc.indexOf(cur) > -1 ? acc : acc.concat(cur), json1)
.filter(item => json1.indexOf(item) === -1 || json2.indexOf(item) === -1);
console.log(result); // ["three", "four"]
发布于 2018-05-26 05:08:34
以下是代码,这是一个函数,它基本上减去2数组并返回结果数组
a1和a2是2个阵列
A是一个空数组,它在所有的a1index中都有真值
a1 = 1,4,5;a= 0,1,0,0,1,1;
1= true,如下所示
现在,我们检查id a中是否存在任何a2index
如果a2 = 1,3;
那么a[a2atanyindex]将是a= 0,1,0,0,1,1;
..........................................................^ 1,如果发生这种情况,请删除该元素
将剩余的元素添加到diff数组中,diff数组是2数组的减去,也就是您需要的答案
function arr_diff(a1, a2) {
var a = [], diff = [];
for (var i = 0; i < a1.length; i++) {
a[a1[i]] = true;
}
for (var i = 0; i < a2.length; i++) {
if (a[a2[i]]) {
delete a[a2[i]];
} else {
a[a2[i]] = true;
}
}
for (var k in a) {
diff.push(k);
}
return diff;
}
https://stackoverflow.com/questions/50536765
复制相似问题