@capitals

Как сравнить два многомерных массива?

Здравствуйте, подскажите как сравнить два многомерных массива? по порядку ([year] сначала первый, потом последующие c [years]).

const years = [['1982', '2001', '1991', '1985'], 
['1988', '2002', '1991', '1992'], 
['1991', '2002', '1971', '1985']];

// Это то, что я имел ввиду многомерный массив.
const year = [['1981', '2001', '1991', '1985'], // Сначала первый проверяется и выводит результаты.
['1991', '2002', '1971', '1985']]; // Потом второй и тд.

const results = years.reduce((acc, curr) =>  {
  return acc.concat(curr.filter((y, i) => y == year[i]).length > 1 ? [curr] : [])
}, []);

console.log(results);


Вывод в данном варианте: ['1982', '2001', '1991', '1985']

Мне нужен полный вывод массива(ов) из [years], если массив [year] имеет более два совпадения (ну или другое, два условно).

Массив [year], мне нужно сделать многомерным, и вывод оставить такой же.

Т.е. массив [year] каждый (то, что мне нужно, а не один) по отдельности проходит по массивам [years] и если есть два и более совпадение - выводит эти полные массивы из [years].
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
zendor
@zendor
Final UPD (если я все правильно понял):
const results = year.map(inner =>
  years.reduce((a, c) => a.concat(c.filter((v, i) => v == inner[i]).length > 1 ? [c] : []), []));

Для каждого массива в year выводятся совпадения в отдельном массиве.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы