Объект в массиве второго порядка

есть вот такой массив данных

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

→ Ссылка