Deshalb möchte ich konvertieren:in Javascript reduzieren
Von:
{
emailNotify: {
EQ: true
},
foo: {
bar: false
}
}
Um:
[
{'condition': 'EQ', 'attribute': emailNotify, 'value': true},
{'condition': 'bar', 'attribute': foo, 'value': false}
]
ich den folgenden Code versucht:
var fromObj={
emailNotify: {
EQ: true
},
foo: {
bar: false
}
};
console.log(Object.keys(fromObj));
var result = (Object.keys(fromObj)).reduce(function(p,c,i,a){
var newObj={};
newObj["condition"]=Object.keys(fromObj[c])[0];
newObj["attribute"]=c;
newObj["value"]=fromObj[c][Object.keys(fromObj[c])[0]];
p.push(newObj);
return p;
},[]);
console.log("result", result);
Ist das so, wie Sie es auch tun würden? Ich glaube ich benutze Reduce nicht richtig?
PS: Ich bekomme das richtige Ergebnis! Wollte nur wissen, ob es der elangante Weg ist oder nicht?
Wenn diese Objekte mehr als eine Eigenschaft haben, gibt es keine Garantie, die von Ihnen als Eigentum bekommen 0. – Pointy
Sie immer eine haben Eigentum; Ich hasse 'fromObj [c] [Object.keys (fromObj [c]) [0]]' though! – user385729
Speichern Sie das Ergebnis des Aufrufs von 'Object.keys (fromObj [c]) [0]', anstatt es mehrmals aufzurufen. Fügen Sie einfach noch eine 'var' hinzu. – Pointy