0
votes

Tableau Aplatirée d'objets ayant des tableaux imbriqués dans leurs propriétés

Actuellement, j'ai un tableau qui contient mes vêtements (données fictives): xxx

Comme vous le voyez, le tableau contient des objets (chemises, pantalons, chaussettes), qui séparent les vêtements par leur taper. Maintenant, que puis-je faire avec JavaScript pour faire une nouvelle gamme de ce qui ressemble à ceci ci-dessous ici? Ainsi, là où toutes les pièces sont insères des chemises / pantalons / chaussettes, et il devrait simplement montrer combien d'articles que j'ai de la marque. xxx


1 commentaires

@Yevgenglorbunkov merci monsieur. Oui, dans ce cas, l'aplatissement était totalement ce que je voulais. Mais mon exemple de données fictif n'était pas le meilleur, peut-être un peu trompeur. Mais de toute façon j'apprécie vraiment votre réponse à mon fil!


3 Réponses :


1
votes

Utiliser .flatmap () code> fonction

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


0 commentaires

1
votes

const clothes = [{
    type: 'shirts',
    pieces: [{
        brand: 'patagonia',
        quantity: 6,
      },
      {
        brand: 'hugo boss',
        quantity: 3,
      },
    ],
  },
  {
    type: 'trousers',
    pieces: [{
        brand: 'jack & jones',
        quantity: 2,
      },
      {
        brand: 'zara',
        quantity: 4,
      },
      {
        brand: 'versace',
        quantity: 1,
      },
    ],
  },
  {
    type: 'socks',
    pieces: [{
      brand: 'no-name',
      quantity: 12,
    }, ],
  },
];

const result = clothes.map(({
  pieces
}) => pieces).reduce((acc, arr) => [...acc, ...arr], []);

console.log(result);


0 commentaires

0
votes

Prouré probablement pas le plus efficace (depuis que Concat crée un nouveau tableau à chaque fois qu'elle est invoquée) ou la solution la plus élégante, mais doit faire le travail.

var all = []
myClothes.forEach((item) => {
    all = all.concat(item.pieces)
})


0 commentaires