J'ai un tableau d'objets. J'ai besoin de transformer cela en objet d'objets. En essayant de le faire, je dois appeler une autre fonction pour chacun de l'objet.
Pourriez-vous m'aider avec cela? P>
code: p>
p>
{ "0": { "type": "string", "id": "item-1" }, "1": { "type": "string", "id": "item-2" } }
3 Réponses :
Utiliser un objet avec des noms de propriétés telles que "0" code> et
"1" code> est vraiment suspect. Je voudrais simplement continuer à utiliser un tableau, que vous pouvez facilement créer via
carte code> (mais continue à lire pour les options d'objet non-arrayes):
function convertData() {
var arr = {"items": [ {"type": "color"}, {"type": "number" }]};
var result = {};
for (var index = 0; index < arr.items.length; ++index) {
result[index] = formatItems(arr.items[index]);
}
console.log(result);
}
function formatItems(item, index) {
return {
type: "string",
id: "item-"+index
};
}
convertData();
Vous devez passer initialvalue code> comme vide
vide code> à réducteur.
function convertData() {
var arr = {"items": [ {"type": "color"}, {"type": "number" }]};
const res = arr.items.reduce(function(acc, item, index) {
const out = formatItems(item, index)
//change this if you need an indexed keys, like acc[index] = out
acc[out.id] = out
return acc
}, {});
console.log(res);
}
function formatItems(item, index) {
return {
type: "string",
id: "item-"+index
}
}
convertData()
in ES6, vous pouvez p> Carte code>
the arr.items code> et Spread La matrice résultante à l'intérieur
{} code>. Cela crée un objet avec des indices de matrice en tant que propriétés
function formatItems(item, index) {
return { type: "string", id: "item-"+index }
}
const arr = { "items": [ {"type": "color"}, {"type": "number" }] };
const output = { ...arr.items.map(formatItems) }
console.log(output)
Utilisation du FormaTems code>, c'est simplement
Laisser la sortie = {... arr.items.map.map (formatitems)}; Code> Nice!
Je suppose que l'op avait besoin d'une solution ES5. Votre ES2015 + un était bien meilleur que le mien. :-) Je ne peux pas croire que je ne pensais pas à ça.
@TJCrowder Merci, j'ai mis à jour la réponse à ce que vous avez mentionné parce que le contenu de formatitems code> sont Dummy selon Op
Ce qui l'a améliorée de manière aussi légère, mais c'était déjà une très bonne réponse. :-)
La production attendue est fausse. Vous cherchez des objets d'objets?
Votre sortie attendue n'est pas valide, elle utilise la notation d'objet, mais il n'y a pas de noms de propriété (dans l'objet extérieur). Quelle est la véritable sortie souhaitée?
" J'ai besoin de transformer cela en objet d'objets i>" serait-ce une matrice B> d'objets? Ou un objet contenant des propriétés et chacun est un objet? Si ce dernier, alors que doivent-ils être les clés?
En ce qui concerne votre édition: cela n'est toujours pas valide. Vous avez une clé avec un objet qui lui est associé, mais le second n'est pas correct. Si celles-ci sont dans un tableau ou attendez-vous deux clés?
BTW, en utilisant les propriétés dynamiques
ID code> avec des numéros séquentiels pourraient être une odeur de code. Il serait bon de savoir pourquoi i> vous avez besoin de cela.
Sortie attendue Code> n'est pas valide, vous ne pouvez pas avoir
{{}} code>, l'objet sont des clés de fermeture / paires de valeurs. Il semble que vous souhaitiez peut-être un tableau
[{}, {}] code> ou des touches de vos valeurs:
{key1: {}, hey2: {}} code>
Désolé mon mauvais! J'ai mis à jour la sortie attendue.
@Sunny - Veuillez adresser le pourquoi B> une partie de Trincot's Question ci-dessus .
Je ne vais pas utiliser "ID" dans le code actuel. Ceci est juste pour créer des données factices pour la publier ici.
@Sunny - La question concerne pourquoi vous créez un objet avec les noms de propriété
"0" code> et
"1" code>, pas sur
ID code> . Pourquoi ne pas continuer à utiliser un tableau?
Je ne peux pas l'utiliser comme une matrice car j'ai besoin de transmettre davantage le résultat comme un argument à une autre méthode, ce qui l'attend en tant qu'objet.