Фильтрация и вывод определенных постов

Всем здравствуйте. Ниже код, как мне обратиться к вложенным массивам и объектам к ним внутри массива и фильтровать вывод данных? К примеру мне возвращается JSON с постами разных категорий(cat1, cat2, cat3, cat7, cat8), как мне отфильтровать данные и возвращать посты только cat3 к примеру? Заранее спасибо

 data
[
 {
  id: 1, 
  title: 'title1',
  category: 
   [
    {id: 1, category: 'cat1'}
    {id: 2, category: 'cat2'}
    {id: 3, category: 'cat3'}
  ]
 }
 {
  id: 2, 
  title: 'title2',
  category: 
   [
    {id: 3, category: 'cat3'}
    {id: 7, category: 'cat7'}
    {id: 8, category: 'cat8'}
  ]
 }
 {
  id: 3, 
  title: 'title3'
 }
 {
  id: 4, 
  title: 'title4'
 }
]


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

Автор решения: Александр Сычёв
  • У вас тут пропущено много запятых

Можно разбить на простые действия: пройтись по массиву - получить доступ к category - снова пройтись по массиву - записать категорию в новы массив

const data = [{
    id: 1,
    title: 'title1',
    category: [{
        id: 1,
        category: 'cat1'
      },
      {
        id: 2,
        category: 'cat2'
      },
      {
        id: 3,
        category: 'cat3'
      },
    ]
  },
  {
    id: 2,
    title: 'title2',
    category: [{
        id: 3,
        category: 'cat3'
      },
      {
        id: 7,
        category: 'cat7'
      },
      {
        id: 8,
        category: 'cat8'
      },
    ]
  },
  {
    id: 3,
    title: 'title3'
  },
  {
    id: 4,
    title: 'title4'
  },
]


function sortCategiry2(cat) {

  let arr2 = [] // создаем пустой массив
  for (let item of data) { // проходим циклом
    if (item.category) { // проверяем существует ли категория
      for (let category of item.category) { // проходим циклом
        if (category.category == cat) { // проверяем есть нужная категория
          arr2.push(item) // записываем в массив
        }
      }
    }

  }
  return arr2 // возвращаем массив
}
console.log(sortCategiry2('cat3'))

→ Ссылка