массив фильтра в соответствии со значением вложенного массива - PullRequest
0 голосов
/ 28 мая 2018

У меня есть массив результатов.Я хочу отфильтровать результаты в массив, у которого category есть хотя бы один объект с cat_id из 1.Как я могу это сделать?

"results": [
  {
    "product_id": 1,
    "title": "booking",
    "draft": false,
    "publish": true,
    "category": [
      {
        "cat_id": 1,
        "cat_name": "web",
        "product": "booking"
      }
    ],
  },
  {
    "product_id": 2,
    "title": "reading",
    "draft": false,
    "publish": true,
    "category": [
      {
        "cat_id": 6,
        "cat_name": "android",
        "product": "asdasd"
      }
    ],
  },
  {
    "product_id": 3,
    "title": "reading",
    "draft": false,
    "publish": true,
    "category": [],
  },
]

Моя попытка:

for (let i = 0; i < data.results.length; i++) {
  this.webCatProducts = data.results[i].category.filter(d => d.cat_id == 1)
  console.log(this.webCatProducts)
}

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы должны выполнить фильтрацию на уровне продукта results: [] и предикат, сопоставленный с ожидаемым идентификатором категории, с вложенной находкой some вот так;.filter(product => product.category.some(cat => cat.cat_id === 1)

Убедитесь, что категория всегда является массивом, в противном случае вам нужно проверить больше .

0 голосов
/ 28 мая 2018

Используйте .some внутри .filter, чтобы проверить, есть ли у любого из category объектов соответствующие cat_id:

const results=[{"product_id":1,"title":"booking","draft":!1,"publish":!0,"category":[{"cat_id":1,"cat_name":"web","product":"booking"}],},{"product_id":2,"title":"reading","draft":!1,"publish":!0,"category":[{"cat_id":6,"cat_name":"android","product":"asdasd"}],},{"product_id":3,"title":"reading","draft":!1,"publish":!0,"category":[],},];
const filtered = results.filter(
  ({ category }) => category.some(({ cat_id }) => cat_id === 1)
);
console.log(filtered);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...