2017-02-28 1 views
0

Ich benutze cursor.observechange so, dass, wenn ein Datensatz hinzugefügt wird, es auf UI benachrichtigt. Record: {"ref":"100","status":"inprogress"} Ich habe ein leeres ArrayHinzufügen und Löschen eines Objekts in JSON-Array basierend auf Ereignissen (cursor.observeChanges)

var arr=[]; 

Wann immer ich muss überprüfen, ob Status inprogress ist und dass ref leider nicht in arr in jedem Objekt existiert [] .. Wenn ja, dann muss ich schieben, dass

arr.push(obj); 

zum arr wenn dieser Status abgeschlossen ist und wenn ref bereits in arr existiert [], dann muss ich das löschen von arr [] Unten ist, dass ich versucht

var arr = []; 
function addObject(obj){ 
     if(!arr.some(function(el){return (el.ref === obj.ref)})) 
      { 
       arr.push(obj); 
      } 
     else if{ 
       arr.slice(el); 
       } 

    } 
    var cursor = TransactionDetails.find({ }); 
    cursor.observeChanges({ 
      added: function(id, object) { 
       if (object.status == "incomplete") { 
        addObject(object); 
        Notification.error("added"); 
       } 
        else if(object.status == "complete" { 

        addObject(object); 
        Notification.error("modified"); 

       } 
     } 

     }); 

Aber das funktioniert nicht.Wie können wir basierend auf diesen Bedingungen hinzufügen und löschen.Any help.Thanks!

Antwort

0

Sie könnten eine Funktion zum Entfernen eines Objekts aus dem Array arr verwenden.

Es verwendet Array#findIndex

function removeObject(obj) { 
    var index = arr.findIndex(o => o.ref === obj.ref); 

    if (index !== -1) { 
     arr.splice(index, 1); 
    } 
} 

Oder ein ES5 Vorschlag mit Array#some

function removeObject(obj) { 
    function getIndex(el, i) { 
     if (el.ref === obj.ref) { 
      index = i; 
      return true; 
     } 
    } 

    var index; 

    if (arr.some(getIndex)) { 
     arr.splice(index, 1); 
    } 
} 
Verwandte Themen