Необходимо вывести только тот массив, в котором есть совпадение с переменной

const name = 'Sydorenko'
const arr = [
  ['Азаров'],
  ['Сидоренко', 'Sydorenko'],
  ['Хоменко']
]

const res = arr.map(item => {
  for (const elem of item) {
    if (elem === name) {
      return item
    }
  }
})
console.log(res)


Ответы (1 шт):

Автор решения: Arbery

Map возвращает тот же массив, не меньше и не больше, но возможно с другими значениями. И в вашем случае это бесполезный перебор - в результате вы получали тот же массив с undefined и целевым массивом.

Поэтому лучше использовать reduce c первоначальным значением [], при переборе проверять наличие includes и добавлять в итоговый при совпадении. При этом если нужен одноуровневый массив - развернуть при добавлении acc.push(...item), или не разворачивать - если нужен массив массивов.

const name = 'Sydorenko'
const arr = [
  ['Азаров'],
  ['Сидоренко', 'Sydorenko'],
  ['Хоменко']
]

const res = arr.reduce((acc, item) => {
  if (item.includes(name)) acc.push(...item);
  return acc;
}, [])
console.log(res)

→ Ссылка