gpt4 book ai didi

javascript - 使用 javascript 过滤器比较两个数组之间的差异

转载 作者:行者123 更新时间:2023-11-28 15:20:11 25 4
gpt4 key购买 nike

问题:比较两个数组并返回一个新数组,其中包含在两个原始数组中都找不到的任何项目。使用Array.filter和Array.indexOf来解决这个问题。

function diff(arr1, arr2) {
var newArr = [];
//code here
return newArr;
}

diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);

我不知道如何继续。我的解决方案与上面的不同,使用硬编码数组。如何使我的通用?

function arrayNotContains(element){
var arr = [1, 2, 3, 5];
if(arr.indexOf(element) === -1){
return true;
}else{
return false;
}
}

var filtered = [1, 2, 3, 4, 5].filter(arrayNotContains);
console.log(filtered);

我在下面还有一个解决方案。这样可以吗?

var arr1 = [1,2,3,5];
var arr2 = [1,2,3,4,5];

var filtered = arr2.filter(function(num) {
if (arr1.indexOf(num) === -1) return num;
});

最佳答案

您将需要使用closure :

function notContainedIn(arr) {
return function arrNotContains(element) {
return arr.indexOf(element) === -1;
};
}

var filtered = [1, 2, 3, 4, 5].filter(notContainedIn([1, 2, 3, 5]));
console.log(filtered); // [4]

请注意,这只是您的解决方案的通用版本,我并不是说这实际上是 symmetric diff 的有效解决方案。功能。为此,正如您的问题中所述,您需要执行类似的操作

function symmDiff(a, b) {
return a.filter(notContainedIn(b)).concat(b.filter(notContainedIn(a)));
}

关于javascript - 使用 javascript 过滤器比较两个数组之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864518/

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