3
votes

Mappage d'un objet vers un tableau

É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()


1 commentaires

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


5 Réponses :


1
votes

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);


0 commentaires

2
votes

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);


0 commentaires

1
votes

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)


0 commentaires

1
votes

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)


0 commentaires

0
votes

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);


0 commentaires