Необходимо вывести только тот массив, в котором есть совпадение с переменной
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)