Momentan verwende ich die forEach()
-Methode von angular, um den neuen Wert mit dem Array von Objekten zu überprüfen. Aber das ist der falsche Ansatz, weil zum Beispiel in der Liste 20 Objekte sind. Wenn ich ein Objekt mit einem vorhandenen Artikel erstelle, sagt die if-Anweisung in forEach einmal aus, dass der Artikel existiert und 19 mal nicht.Prüfen, ob ein Wert im Array vorhanden ist (AngularJS)
Der folgende Code:
var list = [];
articlelist.forEach(function (val) {
list.push(val.artNr);
});
$log.info(list);
Die articlelist
enthält alle 20 Objekte. Zum Vergleich brauche ich nur die artNr
. Denn wenn der Benutzer einen neuen Artikel erstellt, sollte es eine if-Anweisung sein, um zu überprüfen, ob die hinzugefügte artNr bereits existiert.
$scope.createItem = function (createItem) {
if(list.artNr === createItem.artNr) {
$scope.message = 'artNr already exists!';
}
...
};
Das Problem ist, dass list.artNr gibt mir "undefiniert", weil die Liste Variable ist ein Array:
Listenausgabe in der Konsole =>
Array ["AB001", "AB002", "AB003", "AB004"]
,createItem Ausgang: = >
Object { artNr: "AB001", description: "New Article" ...}
Wie kann ich das neu erstellte Objekt mit dem Array aus der Listenvariablen vergleichen?
'indexOf' Methode nicht für mich arbeiten, wie ich json Objektarray aus dem lokalen Speicher abgerufen wurde mit.Nachdem ich viele verschiedene Methoden ausprobiert habe, habe ich mich entschieden, den in AngularJS verfügbaren $ Filter Provider zu verwenden. 'var artikelliste = [{id: 1, titel: 'Titel1'}, {id: 2, titel: 'Titel2'}, {id: 3, titel: 'Titel3'}]' 'var o = $ filter ('filter') (Artikelliste, {'id': new_title.id}, true); ' ' if (o.length == 0) {' ' Artikelliste .push (neues_Artikel); ' '} ' –