Je m'excuse si cela a déjà été répondu - j'ai passé un certain temps à chercher la réponse et je ne l'ai pas encore trouvée :

J'ai un tableau d'éléments avec de nombreux objets imbriqués. C'est un exemple super simplifié :

  const array = [
    {
      name: "item1",
      categories: [
        {
          id: 0,
          name: "soft",
        },
        {
          id: 1,
          name: "medium",
        }
      ],
    },
    {
      name: "item2",
      categories: [
        {
          id: 0,
          name: "medium",
        },
        {
          id: 1,
          name: "hard",
        }
      ],
    },
  ];

J'essaie de comprendre comment créer un filtre pour renvoyer, par exemple, uniquement les éléments qui contiennent une catégorie portant le nom "soft".

Toute aide serait vraiment appréciée.

0
bk___ 2 nov. 2020 à 01:33

1 réponse

Meilleure réponse
const array = [
  {
    name: 'item1',
    categories: [
      {
        id: 0,
        name: 'soft'
      },
      {
        id: 1,
        name: 'medium'
      }
    ]
  },
  {
    name: 'item2',
    categories: [
      {
        id: 0,
        name: 'medium'
      },
      {
        id: 1,
        name: 'hard'
      }
    ]
  }
];

const soft = array.filter(({ categories }) =>
  categories.some(({ name }) => name === 'soft')
);

Ce qui précède ne renverra que les éléments pour lesquels il a une catégorie avec le nom soft.

1
Evan Trimboli 1 nov. 2020 à 22:43