É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