gpt4 book ai didi

javascript - 过滤数组的交集(Javascript)

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

我正在尝试编写一个函数来查找两个嵌套数组共有的数组。另请注意,数组将被预先排序。

var array1 = [ [1, 2, 3], [2, 3, 4] [5, 6, 7] ];
var array2 = [ [1, 2, 3], [2, 3, 4] [7, 8, 9] ];

对于上述两个数组,函数应返回 [5, 6, 7] 和 [7, 8, 9]。

到目前为止我已经得到:

        function arrayIntersection(array1, array2) {
return array2.filter(function(values1) {
return array2.indexOf(values1) === -1;
});
};

但似乎不起作用。我猜 indexOf() 没有正确进行比较。我试图避免使用 ES6 或 polyfill。

最佳答案

您可以使用内置的 .every().filter() 数组方法来完成此任务。

var array1 = [ [1, 2, 3], [2, 3, 4], [5, 6, 7] ];
var array2 = [ [1, 2, 3], [2, 3, 4], [7, 8, 9] ];

function compareArrays(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false;
} else {
return arr1.every(function(elem) {
return arr2.indexOf(elem) > -1;
});
}
}

function filterUnique(arr1, arr2) {
return arr1.filter(function(elem) {
return arr2.every(function(_elem) {
return !compareArrays(_elem, elem);
});
});
}

function filterIntersection(arr1, arr2) {
var uniqueToArr1 = filterUnique(arr1, arr2);
var uniqueToArr2 = filterUnique(arr2, arr1);
return [].concat(uniqueToArr1, uniqueToArr2);
}

console.log(filterIntersection(array1, array2));

关于javascript - 过滤数组的交集(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621455/

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