NEWS
array [string] = variable
-
Hallo Zusammen,
ich möchte gerne mit dem Array week das Objekt monday in einer for Schleife aufrufen.
Problem dabei ist, das week mir einen String zurückgibt. Daher bin ich auf die Idee gekommen mit einem JSON.parse die Anführungszeichen zu entfernen. Leider funktioniert das nicht.const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; let monday = { tag: 1, 1: { startTime: pfad + week[1] + start, },
for (schritt = 0; schritt < week.length; schritt++) { //createTime(week[schritt][1], getState(week[schritt][1].startTime).val) //createTime(week[schritt][2], getState(week[schritt][2].startTime).val) console.log('test1' + getState(week[schritt][1].startTime).val); console.log('test2' + getState(monday[1].startTime).val); console.log('test3 ' + getState(JSON.parse(week[schritt])[1].startTime).val); }
Bei 'test1' erhalte ich ein null
Bei 'test2' erhalte ich 14:45
und 'test3' funktioniert nichtWo liegt hier der Fehler?
-
@malaus
Mit solchen Bruchstücken aus einem Skript kann niemand etwas anfangen.
Wie sieht die ID-Struktur der Datenpunkte aus, die eingelesen werden sollen? -
@malaus sagte in array [string] = variable:
Wo liegt hier der Fehler?
du willst mit den Einträgen im Array deine Variablen addressieren. Dazu musst du entweder im array nicht die Namen sondern direkt die Objekte hinterlegen
let monday = { tag: 1, 1: { startTime: pfad + week[1] + start, }, const week = [sunday, monday, tuesday, wednesday, thursday, friday, saturday];
oder dir ein Objekt schaffen welches das Ummappen übernimmt:
const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; let monday = { tag: 1, 1: { startTime: pfad + week[1] + start, }, const weekobject = { monday: monday, }
im ersten fall sollte direkt
console.log('test1' + getState(week[schritt][1].startTime).val);
funktionieren.
im 2. Fall brauchst du
console.log('test1' + getState(weekobject[week[schritt]][1].startTime).val);
Allerdings erscheinen beide Konstrukte unnötig kompliziert. Wie @paul53 geschrieben hat ist es einfacher zu helfen wenn klarer ist was du eigentlich erreichen willst.
A.
-
@paul53
Der Datenpunkt startTime besteht aus:
pfad = javascript.0.
week = monday
start = .startTimeund wird so erstellt:
createState('javascript.0.monday.startTime', { read: true, write: true, desc: "Beschreibung", type: "string", });
-
@asgothian vielen Dank für diese Lösung!
Der Hintergrund ist der:
Ich möchte gerne die Fahrzeiten aus dem Worx Adapter auslesen und entsprechend einen Scheduler starten, der mir 1h vor Abfahrt die Wichtung der Zone ändert.
Dazu habe ich mir die ganzen Wochentage als Objekte aufgebaut und lasse die Zeiten per for schleife einmalig auslesen alles andere soll nur angepasst werden, wenn sich die Zeiten ändern.
Ich bin da noch viel am probieren, aber hier mal das bisherige Skript:
const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; let monday = { tag: 1, 1: { borderCut: pfad + week[1] + border, startTime: pfad + week[1] + start, workTime: pfad + week[1] + work, wT_min: pfad2 + week[1] + '.wT_min', hour: pfad2 + week[1] + '.hour', min: pfad2 + week[1] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[1] + '2' + border, startTime: pfad + week[1] + '2' + start, workTime: pfad + week[1] + '2' + work, wT_min: pfad2 + week[1] + '2' + '.wT_min', hour: pfad2 + week[1]+ '2' + '.hour', min: pfad2 + week[1] + '2' + '.min', zone: 2, weekday: 1, } } let tuesday = { tag: 2, 1: { borderCut: pfad + week[2] + border, startTime: pfad + week[2] + start, workTime: pfad + week[2] + work, wT_min: pfad2 + week[2] + '.wT_min', hour: pfad2 + week[2] + '.hour', min: pfad2 + week[2] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[2] + '2' + border, startTime: pfad + week[2] + '2' + start, workTime: pfad + week[2] + '2' + work, wT_min: pfad2 + week[2] + '2' + '.wT_min', hour: pfad2 + week[2]+ '2' + '.hour', min: pfad2 + week[2] + '2' + '.min', zone: 2, weekday: 1, } } let wednesday = { tag: 3, 1: { borderCut: pfad + week[3] + border, startTime: pfad + week[3] + start, workTime: pfad + week[3] + work, wT_min: pfad2 + week[3] + '.wT_min', hour: pfad2 + week[3] + '.hour', min: pfad2 + week[3] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[3] + '2' + border, startTime: pfad + week[3] + '2' + start, workTime: pfad + week[3] + '2' + work, wT_min: pfad2 + week[3] + '2' + '.wT_min', hour: pfad2 + week[3]+ '2' + '.hour', min: pfad2 + week[3] + '2' + '.min', zone: 2, weekday: 1, } } let thursday = { tag: 4, 1: { borderCut: pfad + week[4] + border, startTime: pfad + week[4] + start, workTime: pfad + week[4] + work, wT_min: pfad2 + week[4] + '.wT_min', hour: pfad2 + week[4] + '.hour', min: pfad2 + week[4] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[4] + '2' + border, startTime: pfad + week[4] + '2' + start, workTime: pfad + week[4] + '2' + work, wT_min: pfad2 + week[4] + '2' + '.wT_min', hour: pfad2 + week[4]+ '2' + '.hour', min: pfad2 + week[4] + '2' + '.min', zone: 2, weekday: 1, } } let friday = { tag: 5, 1: { borderCut: pfad + week[5] + border, startTime: pfad + week[5] + start, workTime: pfad + week[5] + work, wT_min: pfad2 + week[5] + '.wT_min', hour: pfad2 + week[5] + '.hour', min: pfad2 + week[5] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[5] + '2' + border, startTime: pfad + week[5] + '2' + start, workTime: pfad + week[5] + '2' + work, wT_min: pfad2 + week[5] + '2' + '.wT_min', hour: pfad2 + week[5]+ '2' + '.hour', min: pfad2 + week[5] + '2' + '.min', zone: 2, weekday: 1, } } let saturday = { tag: 6, 1: { borderCut: pfad + week[6] + border, startTime: pfad + week[6] + start, workTime: pfad + week[6] + work, wT_min: pfad2 + week[6] + '.wT_min', hour: pfad2 + week[6] + '.hour', min: pfad2 + week[6] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[6] + '2' + border, startTime: pfad + week[6] + '2' + start, workTime: pfad + week[6] + '2' + work, wT_min: pfad2 + week[6] + '2' + '.wT_min', hour: pfad2 + week[6]+ '2' + '.hour', min: pfad2 + week[6] + '2' + '.min', zone: 2, weekday: 1, } } let sunday = { tag: 0, 1: { borderCut: pfad + week[0] + border, startTime: pfad + week[0] + start, workTime: pfad + week[0] + work, wT_min: pfad2 + week[0] + '.wT_min', hour: pfad2 + week[0] + '.hour', min: pfad2 + week[0] + '.min', zone: 1, weekday: 1, }, 2: { borderCut: pfad + week[0] + '2' + border, startTime: pfad + week[0] + '2' + start, workTime: pfad + week[0] + '2' + work, wT_min: pfad2 + week[0] + '2' + '.wT_min', hour: pfad2 + week[0]+ '2' + '.hour', min: pfad2 + week[0] + '2' + '.min', zone: 2, weekday: 1, } } const week2 = [sunday, monday, tuesday, wednesday, thursday, friday, saturday]; function createTime(obj, start){ let Liste = start.split(':'); let h = parseInt(Liste[0]); let m = parseInt(Liste[1]); let g = (h)*60 + m; setState(obj.wtmin, g); changeTime(obj, g); } function changeTime(obj, g){ let newg = g - 60; let newh = newg/60; let newm = newh - newh setState(obj.hour, newh); setState(obj.min, newm); } let schritt; function firstRun(){ for (schritt = 0; schritt < week2.length; schritt++) { //createTime(week[schritt][1], getState(week[schritt][1].startTime).val) //createTime(week[schritt][2], getState(week[schritt][2].startTime).val) console.log('Gehe einen Schritt nach Osten' + getState(week2[schritt][1].startTime).val); console.log('Gehe nach Osten' + getState(monday[1].startTime).val); //console.log('Gehe ' + getState(JSON.parse(week[schritt])[1].startTime).val); } } if (init !== true){ firstRun(); }
-
@malaus sagte: Der Datenpunkt startTime besteht aus:
const pfad = 'javascript.0.'; const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; for(let schritt = 0; schritt < week.length; schritt++) { log(week[schritt] + ': ' + getState(pfad + week[schritt] + '.startTime').val); }
-
@malaus sagte: hier mal das bisherige Skript:
Ich vermisse die Deklaration der Konstanten pfad, pfad2, border, start, work.