Objekt habe ich folgendes Objekt:Wie eine Funktion zu schreiben, die inlines Eigenschaften
var ob = {
view: {
name: 'zpo',
params: {
taskId: 3,
zuka: 'v'
}
}
}
Ich brauche dieses Objekt in der folgenden Form haben:
{
"view.name":"zpo",
"view.params.taskId":3,
"view.params.zuka":"v"
}
ich eine Funktion geschrieben haben können, die tun Sie das, aber das Problem ist, dass es externe Variablen erfordert, die an es übergeben werden. Hier ist diese Funktion:
function inline(o, result, container) {
for (var p in o) {
if (typeof o[p] === "object") {
inline(o[p], result.length > 0 ? result+'.'+p : p, container);
} else {
container[result + '.' + p] = o[p];
}
}
}
var ob = {
view: {
name: 'zpo',
params: {
taskId: 3,
zuka: 'v'
}
}
}
var c = {};
var r = inline(ob, '', c);
Gibt es eine Möglichkeit, diese Funktion zu schreiben, korrektes Ergebnis ohne die Notwendigkeit zurückzukehren result
und container
externe Variablen zu übergeben?
Bevor Sie versuchen, etwas unnötiges zu tun: Warum brauchen Sie es in diesem Format? Warum nicht * einfach * das 'view' Objekt in diesem' ob' benutzen? Wie für Ihr Code-Problem: Nein, tut es nicht, machen Sie einfach die Funktion zurück, setzen Sie das 'container' als erste Funktionszeile' container = {} 'und beenden Sie dann die Funktion auf' return container'. Grundlegendes Rückkehrmuster. –
@ Mike'Pomax'Kamermans. Können Sie bitte ein Beispiel dafür geben, was Sie meinen? –