NEWS
[Gelöst] Werte aus Objektattributen in ein Array packen?
-
Hi zusammen,
ich probiere mich gerade mit Arrays und dem Lambda-Ausdruck ( => ) aus.
Ziel ist es, möglichst elegant in einer kurzen Zeile alle Werte aus den entsprechenden Objekten als Array zu bekommen.
Folgend mein Code:var strSelector='channel[state.id=alias.0.intern.EG.sensors.Klima.*.temperature]'; log("[Ø-Funktion.dynSelektor] Werte folgenden Selektor aus: '"+strSelektor+"'"); var aObjects = $(strSelektor); log("[Ø-Funktion.dynSelektor] Werte des Selektors:"); aResult = aObjects.each( index => getState(index).val ); log("[Ø-Funktion.dynSelektor] Ergebnisse: '"+aResult.toString()+"'"); return aResult;
aObjects enthält alle Temperaturen als "array of objects" per Selektor gesammelt.
Der Objektbaum dazu:
aResult enthält aber wieder nur Objekte anstelle der konkreten Werte, die ich bei ".val" nun erwartet hätte?
geloggt wird: "[Ø-Funktion.dynSelektor] Ergebnisse: '[object Object]'"
Eigentlich hätte ich so was wie "[Ø-Funktion.dynSelektor] Ergebnisse: [ 20.71, 21.23, 20.95,23 ]" erwartet?Wo ist mein Verständnisfehler?
Ausführliches Log:
-
@iobnordlicht sagte: Ergebnisse: [ 20.71, 21.23, 20.95,23 ]" erwartet?
Wo ist das Werte-Array?
const ids = $('alias.0.intern.EG.sensors.Klima.*.temperature'); const arr = []; ids.each(function(id) { arr.push(getState(id).val); }); log('Ergebnisse: ' + JSON.stringify(arr));
-
@paul53
ich dachte hier?aResult = aObjects.each( index => getState(index).val );
Danke für deine alternative Lösung, ist nur so, dass ich gerade versuche, den Pfeil zu verstehen in der Anwendung und ich dachte, das müsste so doch klappen?
-
@iobnordlicht sagte: ich dachte hier?
Der Selektor liefert ein Objekt mit IDs, das einem Array ähnlich, aber kein Array ist.
@iobnordlicht sagte in Elegant Werte aus Objektattributen in ein Array packen?:
versuche, den Pfeil zu verstehen
Man kann auch den Pfeil verwenden:
const ids = $('alias.0.intern.EG.sensors.Klima.*.temperature'); const arr = []; ids.each(id => { arr.push(getState(id).val); }); log('Ergebnisse: ' + JSON.stringify(arr));
-
@paul53
Ok, danke. Also eine Liste und kein Array, daher mein Verständnisproblem