Всем привет. Вопрос ламера :) Я в javascript совсем ничего не соображаю, как вобщем и в программировании в целом. Но приходится иногда сталкиваться с некоторыми задачами. Что то получается решить, что то нет. Вот как раз сложный случай :) Буду благодарен если кто то сможет помочь.
Есть скрипт, который проверяет массив данных на определенные совпадения и если находит их, то отдает количество записей всего, количество найденных совпадений и перечисляет совпадения (тело) в строку.
Скрипт работает в целом, но есть проблема. Есть одинаковые записи и они не должны дублироваться. Получается, что скрипт сейчас находит 8 совпадений, к примеру, 3 из них дубли. В итоге мне нужно получить число совпадений 5 и соответственно перечисление этих 5ти совпадений в строку. А получаю я количество совпадений 8 и ве они перечисляются, включая дубли.
Короче мне надо дубли как то убить.
createState('zählenLowbat.möglicheLOWBAT', 0, {type: 'number'});
createState('zählenLowbat.anzahlLOWBAT', 0, {type: 'number'});
createState('zählenLowbat.textLOWBAT', " ", {type: 'string'});
const hmLOWBAT = $('hm-rpc.*.LOWBAT');
const mipercent = $('deconz.*.battery');
const loggen = true;
var arrLOWBAT;
function lowbat(id) {
var name = getObject(id).common.name;
if(name.indexOf('.LOWBAT') != -1) name = name.substring(0, name.indexOf(':0.LOWBAT'));
arrLOWBAT.push(name);
if(loggen) log("Gerät: " + name);
}
function countLowbat() {
var moeglicheLOWBAT = 0;
arrLOWBAT = [];
hmLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.LOWBAT if(getState(id).val) lowbat(id); ++moeglicheLOWBAT;
if(getState(id).val) lowbat(id); });
mipercent.each(function (id, i) {
if(getState(id).val < 80) lowbat(id); ++moeglicheLOWBAT;
});
if(loggen) log("Text: " + arrLOWBAT.join(', '));
if(loggen) log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + arrLOWBAT.length);
setState("zählenLowbat.textLOWBAT", arrLOWBAT.join(','));
setState("zählenLowbat.anzahlLOWBAT", arrLOWBAT.length);
setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT);
}
countLowbat(); // Skriptstart
schedule("0 0 * * *", countLowbat);