@ple sagte in Array erstellen mit Prüfung für Json Tabelle:
mit .findIndex kannst du eine Funktion aufrufen, in der du prüfen kannst ob das übergebene Object(oder was auch immer) deiner Suche entspricht. Ich suche hier den Eintrag in dem from und msg == den übergebenen Werten ist und geben über return true zurück, wenn dem so ist.
messageArray.findIndex(function(a) {
return (a.from == f && a.msg == msg)
})
Ich hab nen Display der 3 Zeilen anzeigen kann und dieses Script verwaltet das.
var messageArray = [{},{},{}];
messageArray[0] = {"from":"","msg":"-1"};
messageArray[1] = {"from":"","msg":"-1"};
messageArray[2] = {"from":"","msg":"-1"};
onMessage("DisplayMessage", function(data,result){
var msgfrom = data[2];
var mode = data[1];
var msg = data[0].toString();
if (msg.length == 0 && mode !=0) return;
var done = false;
switch (mode) {
case 0:
done = deleteAllMsg(msgfrom);
break;
case 1:
done = sendMsg(msgfrom,msg);
break;
case 2:
done = deleteMsg(msgfrom,msg);
break;
}
if (done) {
var check=true;
while(check) {
check=false;
var first=-1;
for (var i=0; i<3;i++){
if (messageArray[i].msg != '-1' && first != -1) {
messageArray[first] = messageArray[i];
log(messageArray[i].msg+' swap int:'+ i +' '+first);
check = true;
break;
}
if (messageArray[i].msg=='-1') {
first = i;
}
}
}
for (var i=0; i<messageArray.length;i++){
if (typeof messageArray[i].msg == 'number') {
setState('mqtt.1.display.show.Nachricht.msg'+(i+1), '-1');
} else {
setState('mqtt.1.display.show.Nachricht.msg'+(i+1), messageArray[i].msg);
}
}
}
});
function sendMsg(f, msg) {
if (messageArray.findIndex(function(a){ return (a.from == f && a.msg == msg)}) != -1) return; // keine doppelten Einträge
var a = 2;
while (a--) {
messageArray[a] = messageArray[a-1];
}
messageArray[0]={"from":f,"msg":msg};
return true;
}
function deleteAllMsg(f) {
for (var a=0;a<3;a++){
if (messageArray[a].from == f) messageArray[a]={"from":"","msg":"-1"};
}
return true;
}
function deleteMsg(f,msg) {
for (var a=0;a<3;a++){
if (messageArray[a].msg==msg && messageArray[a].from == f ) {
messageArray[a]={"from":"","msg":"-1"};
return true;
}
}
return false;
}