gpt4 book ai didi

javascript - 比较 2 个数组并获取那些不匹配的变量

转载 作者:行者123 更新时间:2023-12-02 14:43:18 25 4
gpt4 key购买 nike

var array1 = ["display1"];
var array2 = ["display1", "display2", "display3"];

Array.prototype.compare = function(testArr) {
if (this.length != testArr.length) return false;
for (var i = 0; i < testArr.length; i++) {
if (this[i].compare) {
if (!this[i].compare(testArr[i])) return false;
}
if (this[i] !== testArr[i]) return false;
}
return true;
}

if(!array1.compare(array2)) {
alert("is not match");
// get all un-matched variable.
}else{
alert("matched");
}

我的目的是比较两个数组,并取出所有不匹配的变量,这段代码都比较看它们是否匹配。

如何获取所有不匹配的变量?

因此结果将是 ["display2", "display3"];

最佳答案

您可以使用一个临时对象来计算 array1array2 的给定值,并过滤该值是否为 1。

function xxx(a1, a2) {
var a3 = a1.concat(a2),
temp = Object.create(null);

a3.forEach(function (a) {
temp[a] = (temp[a] || 0) + 1;
});
return a3.filter(function (a) {
return temp[a] === 1;
});
}

var array1 = ["display1"],
array2 = ["display1", "display2", "display3"],
array3 = xxx(array1, array2);

document.write('<pre>' + JSON.stringify(array3, 0, 4) + '</pre>');

ES6

function xxx(a1, a2) {
var a3 = a1.concat(a2),
temp = Object.create(null);

a3.forEach(a => temp[a] = (temp[a] || 0) + 1);
return a3.filter(a => temp[a] === 1);
}

var array1 = ["display1"],
array2 = ["display1", "display2", "display3"],
array3 = xxx(array1, array2);

document.write('<pre>' + JSON.stringify(array3, 0, 4) + '</pre>');

关于javascript - 比较 2 个数组并获取那些不匹配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36833140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com