Ich habe ein Array von Objekt, und ich möchte es in eine Karte von Schlüssel-Wert-Paare mit dem id
als Schlüssel konvertieren. Ich möchte dies jedoch sowohl für die Root-Ebene als auch für das Attribut recipes
tun.Unterstrich für mehrere verschachtelte Ebene Arrays
Array resp
:
[
{
"id": "1",
"recipes": [
{
"id": 4036
},
{
"id": 4041
}
]
},
{
"id": "2",
"recipes": [
{
"id": 4052
},
{
"id": 4053
}
]
}
]
Gewünschtes Ergebnis
{
"1": {
"id": "1",
"recipes": {
"4036": {
"id": 4036
},
"4041": {
"id": 4041
}
}
},
"2": {
"id": "2",
"recipes": {
"4052": {
"id": 4052
},
"4053": {
"id": 4053
}
}
}
}
Ich weiß, wie dies zu tun lodash durch die folgende Funktion:
Mit Underscore.js
function deepKeyBy(arr, key) {
return _(arr)
.map(function(o) { // map each object in the array
return _.mapValues(o, function(v) { // map the properties of the object
return _.isArray(v) ? deepKeyBy(v, key) : v; // if the property value is an array, run deepKeyBy() on it
});
})
.keyBy(key); // index the object by the key
}
Für dieses Projekt aber ich suche eine elegante Lösung, um die gleiche Sache zu tun unterstreichen mit - machen alle Objekte innerhalb des Arrays verschachtelt id
als Schlüssel verwenden. Weiß jemand, wie man das macht?
Danke!
EDIT: Added das gewünschte Ausgabeformat
Können Sie die Struktur des gewünschten Ergebnisses anzeigen? – hackerrdave
@hackerdave Ich habe oben das gewünschte Ergebnis hinzugefügt – alchuang