JavaScript: использование метода Reduce для объединения нескольких массивов в один массив - PullRequest
0 голосов
/ 09 июня 2019

У меня есть следующий код:

const intersection = (arr) => {

  //console.log(arr)

  return arr.reduce((a,e) => a+e, [])

}

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]));

Я ожидаю, что мой код напечатает [5,10,15,2015,88,1,5,71,10,15,5,20], но вместо этого он печатает 5,10,15,2015,88,1,5,71,10,15,5,20

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Не используйте + для добавления массивов.Используйте concat вместо:

const intersection = arr => arr.reduce((a, e) => a.concat(e), []);

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]));
.as-console-wrapper { max-height: 100% !important; top: auto; }
0 голосов
/ 09 июня 2019

Вы пытаетесь объединить массивы с оператором +.Поскольку массивы не поддерживают оператор +, они приводятся к строкам.Вы можете использовать массив или Array.concat(), чтобы объединить их, используя Array.reduce():

const intersection = arr => arr.reduce((a, e) => [...a, ...e], [])

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]));

Или вы можете использовать Array.flat():

const intersection = arr => arr.flat();

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]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...