NEWS
[gelöst ]Name vom Objekt oberhalb
-
Ich bräuchte da mal wieder Hilfe.
Ich habe einen Datenpunkt z. B.
var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/;
wie gelange ich per Javascript zum Objekt oberhalb um dort mittels common.name den Namen des Gerätes herauszufinden?
Damit es deutlicher wird hier noch ein Bild:
-
String nehmen, nach '.' aufspalten, das letzte Element im Array wegwerfen, mit '.' dazwischen wieder zusammen bauen
-
sorry ich verstehe nur Bahnhof?
Was heißt String nehmen? Aufspalten ist ok..split('.')
was wegwerfen und was zusammenbauen?
-
var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/; var split = id_Sonos_Coordinator.split('.'); log(split);
ergibt:
Script.js.Test.Test_Name_ermitteln: sonos,0,root,192_168_178_35,coordinator
-
@cash Vorschlag:
var parent = id.substring(0, id.lastIndexOf('.')); var name = getObject(parent).common.name;
-
ok und ein
log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]);
ergibt:
sonos.0.root.192_168_178_35
nur einfach ein .common.name daran funktioniert nicht...
-
@cash soweit schon so schön. Wenn du jetzt aus dem array das du bekommst den letzten Eintrag (das 'coordinator' wegnimmst, dann kannst du das ganze per
split.length -- id = split.join('.')
dann hast du die id des Objekts darüber.
an den Namen kommst du meines Wissens über getObject(id).common.name
@paul53 sagte in Name vom Objekt oberhalb:
@cash Vorschlag:
var parent = id.substring(0, id.lastIndexOf('.'));
var name = getObject(parent).common.name;oder so
-
@paul53 das funktioniert leider nicht:
var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/; var split = id_Sonos_Coordinator.split('.'); //log(split); //log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]); var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.')); var name = getObject(devid).common.name; log('Name: ' +name);
Ergibt keine Ausgabe im Log.
-
@Asgothian said in Name vom Objekt oberhalb:
split.length --
id = split.join('.')ja das funktioniert:
var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/; var split = id_Sonos_Coordinator.split('.'); //log(split); //log(split[0]+'.'+split[1]+'.'+split[2]+'.'+split[3]); var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.')); //var name = getObject(devid).common.name; //log('Name: ' +name); split.length -- var id = split.join('.') log('id: ' +id); log(getObject(id).common.name);
Ok muss mal drüber googeln. Das join verstehe ich. da .length -- verstehe ich nicht. Bin halt leider kein Programmierer.
Danke auf jeden Fall
-
das ist eigentlich ganz einfach..
split.length gibt die die Länge des Arrays zurück, das du durch das aufsplitten bekommen hast
das -- reduziert den um 1, sprich der letzte Eintrag im Array fällt weg.
das join fuegt dann die verbleibenden wieder zusammen.A.
-
@Asgothian Vielen Dank für die Erklärung und die Geduld
@paul53 auch Dir vielen Dank. Deine Lösung funktionierte genauso. Keine Ahnung was ich da beim ersten Versuch falsch gemacht habe.Ich habe jetzt nochmal beide Sachen getestet und vorlagen verstanden. So sind beide Lösungen logisch.
Hier also nochmal die beiden Lösungsmöglichkeiten:
var id_Sonos_Coordinator = 'sonos.0.root.192_168_178_35.coordinator'/*coordinator*/; //Methode 1 var devid = id_Sonos_Coordinator.substring(0, id_Sonos_Coordinator.lastIndexOf('.')); var common_name1 = getObject(devid).common.name; log('Name Methode1: '+common_name1); //Methode 2 var split = id_Sonos_Coordinator.split('.'); split.length -- var id = split.join('.') var common_name = getObject(id).common.name; log('Name Methode2: ' +common_name);