Essayer de mapper un tableau d'objets avec des valeurs imbriquées dans la structure des objets enfants comme:
const mapped = objs.map((key, index) => {
Object.keys(key).map(el => ({
name: el
}))
})
à la structure comme:
[
{ name: 'B', value: 1 },
{ name: 'D', value: '45' },
{ name: 'E', value: '234' },
{ name: 'A', value: '543' },
{ name: 'C', value: '250' }
]
et le résultat du mappage est non défini
const objs = [{
"B": {
"value": 1,
},
"D": {
"value": "45"
},
"E": {
"value": "234"
},
"A": {
"value": "543"
},
"C": {
"value": "250"
}
},...]
Exemple: Stackblitz
3 Réponses :
return est manquant dans Object.keys . De plus, au lieu de Object.keys , utilisez Object.entries pour obtenir key et value .
p>
const objs = [{
"B": {
"value": 1,
},
"D": {
"value": "45"
},
"E": {
"value": "234"
},
"A": {
"value": "543"
},
"C": {
"value": "250"
}
}];
const mapped = objs.map((key, _) => {
return Object.entries((key)).map(([name, {
value
}]) => ({
name,
value
}))
}).flat();
console.log(mapped);
Il vous manque l'instruction return et la définition de la propriété value .
En outre, vous pouvez utiliser flatMap au lieu de map afin d'éviter un tableau imbriqué dans le résultat:
const objs = [{
"B": {
"value": 1,
},
"D": {
"value": "45"
},
"E": {
"value": "234"
},
"A": {
"value": "543"
},
"C": {
"value": "250"
}
}]
const mapped = objs.flatMap((key, index) => {
return Object.keys(key).map(el => ({
name: el,
value: key[el].value
}))
})
console.log(mapped)
Excellent exemple. Existe-t-il un moyen de garder l'ordre des éléments tout au long de l'itération comme dans l'exemple?
Merci! L'ordre des objets en résultat est-il différent de l'ordre des clés? De mon côté, cela semble être le même (B, D, E, A, C).
Vous devez opérer sur objs [0], pas sur objs, car il s'agit d'un tableau d'un objet, pas d'un tableau d'objets.
let array = []
for(let object in objs[0]){
array.push({
"name": object,
"value": objs[0][object].value
})
}
Mon erreur, je n'ai pas ajouté la structure de données entière (juste trois points), il y a un tableau d'objets comme dans l'exemple sur le stackblitz.
returnest manquant.