@mihass

Как убрать дубли в записи?

Всем привет. Вопрос ламера :) Я в 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);
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
@OniVe
Для работы с коллекциями есть lodash

- lodash uniqBy
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы