【发布时间】:2018-03-09 03:20:40
【问题描述】:
我想比较多个数组,最后得到一个包含来自不同数组的所有唯一值的数组。我试图:
1、使用filter方法比较2个数组的差异
2、调用for循环将数组输入到filter方法中
代码如下
function diffArray(arr1, arr2) {
function filterfunction (arr1, arr2) {
return arr1.filter(function(item) {
return arr2.indexOf(item) === -1;
});
}
return filterfunction (arr1,arr2).concat(filterfunction(arr2,arr1));
}
function extractArray() {
var args = Array.prototype.slice.call(arguments);
for (var i =0; i < args.length; i++) {
diffArray(args[i],args[i+1]);
}
}
extractArray([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3]);
但是它不起作用并返回错误消息“无法读取属性 'indexOf' of underfined”...。逻辑有什么问题,我应该更改什么才能使其正常工作?
非常感谢您提前提供的帮助!
Re:对于所有将这个问题标记为重复的人......我正在寻找的是一种解决方案,它可以让我放置尽可能多的数组作为输入并减少所有差异(例如输入 10000 个数组和返回 1 个数组以获得唯一值),但不仅比较 2 个数组.. 我看到的解决方案总是只有 2 个数组。
【问题讨论】:
-
您的 extractArray 中没有参数...我假设您打算将 arguments 变量作为参数?
-
@Pak,它对你有用吗?
-
@Alexandru-Ionut Mihai 我记得我以前看过你的回答,但我不知道它为什么消失了.....不过还是谢谢你的帮助!
标签: javascript arrays