Доброго дня всем! Помогите пожалуйста оптимизировать код, есть задача перебора состояния всех реле и при нажатии кнопки если какое-то реле True переключить все в False, для этого распарсить все состояния реле, задача простая но я где-то ошибаюсь в синтаксисе и правило не исполняется
есть Обьект с состояниями кнопок
var buttons = {In1:“wb-gpio/EXT1_DR1”,
In2:“wb-gpio/EXT1_DR2”,
In3:“wb-gpio/EXT1_DR3”,
In4:“wb-gpio/EXT1_DR4”,
In5:“wb-gpio/EXT1_DR5”,
In6:“wb-gpio/EXT1_DR6”,
In7:“wb-gpio/EXT1_DR7”,
In8:“wb-gpio/EXT1_DR8”,
In9:“wb-gpio/EXT1_DR9”,
In10:“wb-gpio/EXT1_DR10”,
In11:“wb-gpio/EXT1_DR11”,
In12:“wb-gpio/EXT1_DR12”,
In13:“wb-gpio/EXT1_DR13”,
In14:“wb-gpio/EXT1_DR14”,
};
и Обьект с состояниями реле
var relays = {Out1:“wb-gpio/A1_OUT”,
Out2:“wb-gpio/A2_OUT”,
Out3:“wb-gpio/A3_OUT”,
Out4:“wb-gpio/A4_OUT”,
};
при замыкании кнопки должен запускаться цикл и если условие выполняется срабатывать, подскажите ошибку
я хочу использовать for in чтобы не писать длинную строчку в условии
когда пишу
defineRule(“else”,{
whenChanged: buttons.In11,
then: function (newValue, devName, cellName) {
if (dev[buttons.In11] == true) {
//for (var i in relays ) {
if (dev[relays.Out1] == false || dev[relays.Out2] == false && dev[relays.Out3] == false || dev[relays.Out4] == false) {
dev[relays.Out3] = true;
}
//}
}
}
});
все работает но я хочу сократить запись с помощью:
for (var i in relays )
defineRule(“else”,{
whenChanged: buttons.In11,
then: function (newValue, devName, cellName) {
if (dev[buttons.In11] == true) {
for (var i in relays ) {
if (i+“:”+relays[i] && dev[relays.Out1] == false || dev[relays.Out2] == false && dev[relays.Out3] == false || dev[relays.Out4] == false) {
dev[relays.Out3] = true;
}
}
}
}
});
Как же правильно записать чтобы сократить длинную строку if не использовать dev[relays.Out1] == false || dev[relays.Out2] == false && dev[relays.Out3] == false || dev[relays.Out4] == false)