【发布时间】:2019-10-29 08:39:52
【问题描述】:
构造一个函数交集,比较输入数组并返回一个新数组,其中包含在所有输入中找到的元素。
我的解决方案可行,但很麻烦:
const intersection = (arrMerged) => {
let finalArr = [];
let flatArray = [].concat(...arrMerged)
let newArr = [];
//console.log(flatArray)
//let interArray = [];
if (arrMerged[2] !== undefined){
newArr = arrMerged[0].map((elem) => {
if (arrMerged[1].includes(elem) && arrMerged[2].includes(elem)){
return elem;
}
})
}
else {
newArr = arrMerged[0].map((elem) => {
if (arrMerged[1].includes(elem)){
return elem;
}
})
}
newArr.forEach((elem) => {
if (elem !== undefined){
finalArr.push(elem)
}
})
return finalArr;
}
// Uncomment these to check your work!
const arr1 = [5, 10, 15, 20];
const arr2 = [15, 88, 1, 5, 7];
const arr3 = [1, 10, 15, 5, 20];
console.log(intersection([arr1, arr2, arr3])); // should log: [5, 15]
我还想在我的解决方案中使用 reduce()。有人可以提供一个使用 reduce() 并且效率更高的替代代码解决方案吗?
如果您能评论代码的每一行所做的事情以帮助我理解,我将不胜感激。
【问题讨论】:
标签: javascript function return reduce