Создает пересечение функций, которое сравнивает входные массивы и возвращает новый массив с элементами, найденными во всех входных данных.
Мое решение работает, но оно очень громоздко:
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 () в моем решении. Может ли кто-нибудь предоставить альтернативное решение для кода, которое использует redu () и является более эффективным, пожалуйста?
Буду признателен, если вы прокомментируете, что делает каждая строка вашего кода, чтобы помочь мне понять.