Actuellement, j'ai un tableau qui contient mes vêtements (données fictives): 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. P>
3 Réponses :
Utiliser p> .flatmap () code> fonction .as-console-wrapper { max-height: 100% !important; top: 0; }
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);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)
})
@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!