и JS вообще, но тем не менее…
Есть данные, приходящие от бэкэнда, типа
{controller: 'l1', //(or l2, l3, l4)
status: '#M,IN,011111'} //(or other ones I check in if statements)
Там несколько контроллеров, данные от каждого идут с разными статусами и сложить, точнее разложить мне эти данныыве нужно в объект по контроллерам:
{l1: {in1: 1, in2: 0, ...}, l2: {in1:0, ...}, l3: {in1:1, ...}, l3: {...}, l4: {...}}
Вот фрагмент компонента:
{
this.wsSubscription =
this.controlService.createObservableSocket(this.awsUrl)
.subscribe(
data => {
if(data.cotroller == 'l1') {
if(data.status.startsWith('#RD')){
this.status.l1.in1 = data.status[4];
this.status.l1.in2 = data.status[5];
this.status.l1.in3 = data.status[6];
this.status.l1.in4 = data.status[7];
this.status.l1.in5 = data.status[8];
this.status.l1.in6 = data.status[9];
console.log('Состояние RD L1 обновлено');}
if (data.status.startsWith('#M,EIN')) {
switch (data[7]) {
case 1 : {this.status.l1.in1 = data.status[9]; break}
case 2 : {this.status.l1.in2 = data.status[9]; break}
case 3 : {this.status.l1.in3 = data.status[9]; break}
case 4 : {this.status.l1.in4 = data.status[9]; break}
case 5 : {this.status.l1.in5 = data.status[9]; break}
case 6 : {this.status.l1.in6 = data.status[9]; break}
}
console.log('Состояние M EIN L1 обновлено');
}
if(data.status.startsWith('#M,IN')){
this.status.l1.in1 = data.status[6];
this.status.l1.in2 = data.status[7];
this.status.l1.in3 = data.status[8];
this.status.l1.in4 = data.status[9];
this.status.l1.in5 = data.status[10];
this.status.l1.in6 = data.status[11];
console.log('Сотсояние M IN L1 обновлено');}
}
},
err => console.log( 'err: ' + err),
() => console.log( 'The observable createObservableSocket is complete')
);
Получается весьма длинный код даже для одного компонента с несколькими условиями, а в перспективе и статусов будут десятки, и контроллеров будет много, есть способ компактнее это сделать?
В сторону циклов подумать.
Ошибка у тебя switch (data[7]) {
Обсуждают сегодня