Étant donné un objet comme celui-ci:
[
{value: "aaa", label: "Text1"},
{value: "bbb", label: "Text2"}
]
Quelle est la manière la plus simple de renvoyer ce tableau:
{
aaa: {
text: "Text1",
path: "Path1",
type: "Type1"
},
bbb: {
text: "Text2",
path: "Path2",
type: "Type2"
},
...
}
Dois-je boucler à travers l'objet? J'ai pensé qu'il pourrait y avoir un moyen avec Object.keys () et Object.values()
5 Réponses :
cela peut aider
const obj = {
aaa: {
text: "Text1",
path: "Path1",
type: "Type1"
},
bbb: {
text: "Text2",
path: "Path2",
type: "Type2"
},
};
const ans = Object.keys(obj).map(itm => ({value: itm, title: obj[itm].text}))
console.log(ans);
Vous pouvez utiliser Object.entries pour convertir l'objet en un tableau. Utilisez map pour boucler et renvoyer l'objet souhaité.
let obj = {
aaa: {
text: "Text1",
path: "Path1",
type: "Type1"
},
bbb: {
text: "Text2",
path: "Path2",
type: "Type2"
},
}
let result = Object.entries(obj).map(([k, v]) => ({value: k,label: v.text}));
console.log(result);
Vous devez parcourir ces valeurs clés, utilisez Object.entries pour obtenir la paire clé-valeur et Array # map pour itérer et générer le nouveau tableau.
let data = {"aaa":{"text":"Text1","path":"Path1","type":"Type1"},"bbb":{"text":"Text2","path":"Path2","type":"Type2"}};
let res = Object.entries(data).map(([value, { text: title }]) => ({ value, title }))
console.log(res)
Vous pouvez utiliser pour. .in pour itérer l'objet et pousser la valeur dans un tableau
let obj = {
aaa: {
text: "Text1",
path: "Path1",
type: "Type1"
},
bbb: {
text: "Text2",
path: "Path2",
type: "Type2"
}
}
let modObj = [];
for (let keys in obj) {
modObj.push({
value: keys,
label: obj[keys].text
})
};
console.log(modObj)
Puisque personne n'a mentionné l'utilisation à la fois d'Object.keys et d'Object.values comme vous l'avez mentionné dans la question ...
var obj = {
aaa: {
text: "Text1",
path: "Path1",
type: "Type1"
},
bbb: {
text: "Text2",
path: "Path2",
type: "Type2"
}
};
var result = Object.keys(obj).map(function(key, i){
return {value: key, label: Object.values(obj)[i].text}
});
console.log(result);
Veuillez montrer ce que vous avez essayé jusqu'à présent et expliquer ce qui n'a pas fonctionné avec votre tentative (erreurs, résultats inattendus, etc.). / JavaScript / Reference / Global_Objects / Object / entries "rel =" nofollow noreferrer ">
Object.entries ()pourrait vous aider ici