我对JavaScript还不是很熟悉,我已经在一个月内尝试了4次这个问题,但仍然无法解决。
所以问题是:
构建一个名为 intersection 的函数来比较输入的数组,并返回一个新数组,其中包含在所有输入中都找到的元素。奖励:使用 reduce!
格式如下:
function intersection(arrays) {
// Your Code Goes Here
}
测试用例:应记录[15, 5]
console.log('Extensions 3 Test: ' + intersection([5, 10, 15, 20], [15, 88, 1, 5, 7]/*, [1, 10, 15, 5, 20]*/));
我的现有解决方案:只适用于比较两个项目的情况,但不适用于第三个项目,我可以循环遍历并将获取到的值与下一个数组进行比较,但我认为我没有走在正确的道路上……同时,我没有使用reduce来实现它……而且我不确定是否应该使用“arguments”。任何帮助都将不胜感激!非常感谢。
function intersection(arrays) {
array = [];
for (var i = 0; i < arguments.length; i++)
array.push(arguments[i]);
var result = [];
for(var i = 0; i < array.length - 1; i++) {
for(var j = 0; j < array[i].length; j++) {
if (array[i+1].includes(array[i][j]))
result.push(array[i][j]);
}
}
return result;
}
lodash
(或underscore
)呢?在JavaScript中,为这样一个经过深入探索的领域重新发明轮子似乎有点疯狂。 - chriskelly