Объект в массиве второго порядка
есть вот такой массив данных
state: {
data:[
{
country: 'Russia',
id: 1,
info: [
{
capital:'Moscow',
id: 2,
nature: [
{
river: 'Moscow',
id: 3
}
]
}
]
},
{
country: 'UK',
id: 4,
info: [
{
capital:'London',
id: 5,
nature: [
{
river: 'Thames',
id: 6
}
]
}
]
}
]
}
он будет отрисован перебором, каждая вложенность массива в своем компоненте (React).
<Data>
<Info>
<Nature>
<Nature/>
<Info/>
<Data/>
напротив каждого значения (country, capital, river) будет button.
нужно реализовать filter массива, что бы в консоле выводилось только выбранное значение. подскажите как сделать через, все метогды кроме reduce.
Вот.... Спасибо
Ответы (1 шт):
Автор решения: Vasily Rogoja
→ Ссылка
const data = [
{
country: 'Russia',
id: 1,
info: [
{
capital:'Moscow',
id: 2,
nature: [
{
river: 'Moscow',
id: 3
}
]
}
]
},
{
country: 'UK',
id: 4,
info: [
{
capital:'London',
id: 5,
nature: [
{
river: 'Thames',
id: 6
}
]
}
]
}
]
const findById = (items, id) => {
const fountItem = items.find((item) => {
if(item.id === id) {
return item;
}
})
return fountItem || findById(items.flatMap(item => (item.info || item.nature || [])), id);
}
console.log('id 1 = ', findById(data, 1))
console.log('id 2 = ', findById(data, 2))
console.log('id 5 = ', findById(data, 5))
console.log('id 6 = ', findById(data, 6))