2017-03-13 10 views
-1

Ich habe eine Klasse mit den Eigenschaften:überprüfen, ob neues Objekt bereits existiert in Array Typoskript

id: number; 
motorcycleId: number; 
brand: string; 
model: number; 
year: string; 
isDeleted: boolean; 

Dann in meiner Komponente, ich habe ein Array von diesem Modell

motorcyclesList: MotorcycleModel[]; 

Dann Ich möchte überprüfen, ob ich ein neues Motorrad hinzufüge, überprüfen Sie, ob es bereits in Array vorhanden ist.

 if (this.motorcyclesList.find(x => x.model === this.motorcycle.model && 
     x.motorcycleId === this.motorcycle.motorcycleId && 
     x.year === this.motorcycle.year)) { 
     //some logic if exst 
    } 

Und hier habe ich immer falsch.

+0

, dass das Array bedeutet nicht bereits das Motorrad enthalten. Sie sollten einige() anstelle von find(), BTW verwenden. Was ist deine Frage? –

+0

@JBNizet, motorclesList ist nicht null, es enthält eine Reihe von Motorrädern. Meine Frage ist, wie man überprüft, ob ein Element bereits im Array existiert. Es gibt mir immer falsch, aber Artikel, den ich versuche hinzuzufügen, gibt es bereits in der motorradListe. – Vitaliy

+0

Die Methode 'find()' gibt keinen booleschen Wert zurück, sondern gibt entweder das gefundene Element oder 'undefiniert' zurück, weshalb @JBNizet vorgeschlagen hat, statt 'find()' '' some() 'zu verwenden. Bitte fügen Sie Ihrer Frage Code hinzu, damit wir die Dinge selbst überprüfen können. Wie fügst du dem Array Elemente hinzu? und so weiter –

Antwort

1

bearbeitet basiert auf, was @JB_Nizet und @Nitzan_Tomer sagte:

stellen Sie sicher, this.motorcycle.motorcycleId und this.motorcycle.model Nummer zu werfen + mit:

let exist :boolean = this.motorcyclesList.some(x => 
     x.model === +this.motorcycle.model && 
     x.motorcycleId === +this.motorcycle.motorcycleId && 
     x.year === this.motorcycle.year 
); 

// do something with exist 
+0

funktioniert nicht für mich – Vitaliy

+0

siehe das Update. –

Verwandte Themen