Objekt erstellen aus array
Möchte ich zum erstellen von Objekten aus der Liste der array. Ich habe ein array, das dynamisch ist, das wohl wie folgt Aussehen:
var dynamicArray = ["2007", "2008", "2009", "2010"];
und mit einigen javascript-es6 ich möchte ein Objekt wie dieses:
const obj = {
2007: {
x: width / 5,
y: height / 2
},
2008: {
x: (2 / 5) * width,
y: height / 2
},
2009: {
x: (3 / 5) * width,
y: height / 2
},
2010: {
x: (4 / 5) * width,
y: height / 2
}
}
Mach dir keine sorgen über innere Objekte, sondern wollte nur eine Struktur wie diese:
obj = {
2007: ...,
2008: ...,
...
}
Bitte helfen, Danke.
- Okay. Was haben Sie versucht? Wo sind Sie stecken geblieben? Was die Forschung haben Sie getan? Haben Sie sich thiszum Beispiel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach
oder wenn Sie bevorzugen "funktionalen" Stil:
Umgang mit der modernen Objekt-spread-operator:
Beispiel:
Ausgabe:
Hier ist, wie es funktioniert:
reduce
initialisiert ein leeres Objekt (leer{}
am Ende), daher die erste iteration Variablen sindacc = {}
cur = { id: 10, color: "red" }
. Die Funktion gibt ein Objekt zurück - dies ist der Grund, warum die Funktion Körper ist eingewickelt in Klammern=> ({ ... })
. Spread-operator nicht alles tun, auf der ersten iteration, sored: 10
wird als erstes Element.Auf dem zweiten iteration Variablen sind
acc = { red: 10 }
cur = { id: 20, color: "blue" }
. Hier ist der spread-operator erweitertacc
und die Funktion gibt{ red: 10, blue: 20 }
.Dritte iteration
acc = { red: 10, blue: 20 }
cur = { id: 30, color: "green" }
, so dass, wennacc
verteilt innerhalb des Objekts, unsere Funktion liefert den letzten Wert.array.reduce
Funktion.const
. Eigentlich sollten Sie es verwenden, unabhängig. Auch, wenn Sie Zugang zu ES-Neben rest - /spread-syntax (sagen über TypeScript oder Babel) Sie können schreibenconst obj = yourArray.reduce((o, key) => ({ ...o, [key]: whatever}), {})
und vermeiden es sogar, mutiert der Samen :pin js mit es6 senken-Funktion für Arrays mache ich es wie diese
können Sie verwenden: