Heim >Web-Frontend >js-Tutorial >Wie kann ich Objekte in JavaScript-Arrays basierend auf Attributwerten effizient finden?
Beim Umgang mit Arrays von Objekten ist es häufig erforderlich, anhand von Attributwerten nach bestimmten Elementen zu suchen. Dies ist besonders nützlich, wenn mit großen Arrays gearbeitet wird, um ineffiziente Schleifen zu vermeiden.
Betrachten Sie das folgende Array von Anbieterobjekten:
vendors = [{ Name: 'Magenic', ID: 'ABC' }, { Name: 'Microsoft', ID: 'DEF' } // and so on... ];
Das Ziel ist die Bestimmung wenn in diesem Array ein Objekt mit dem Namensattribut gleich „Magenic“ vorhanden ist, ohne auf explizite Schleifen zurückzugreifen.
Modernes JavaScript bietet mehrere Array-Methoden, die diese Aufgabe mühelos machen:
Mit einigen:
if (vendors.some(e => e.Name === 'Magenic')) { // We found at least one object that we're looking for! }
einige iteriert über das Array und gibt zurück true, sobald ein Element gefunden wird, das der angegebenen Bedingung entspricht.
Using find:
if (vendors.find(e => e.Name === 'Magenic')) { // Usually the same result as above, but find returns the found object instead of a boolean }
find verhält sich ähnlich wie einige, aber anstatt einen booleschen Wert zurückzugeben, gibt es das erste Element zurück, das der Bedingung entspricht.
Ermitteln der Position des Objekts :
Um die Position des passenden Elements zu erhalten, verwenden Sie findIndex:
const i = vendors.findIndex(e => e.Name === 'Magenic'); if (i > -1) { // We know that at least 1 object that matches has been found at the index i }
Alle passenden Objekte finden:
if (vendors.filter(e => e.Name === 'Magenic').length > 0) { // The same result as above, but filter returns all objects that match }
filter gibt ein Array aller Elemente zurück, die die angegebene Bedingung erfüllen.
Kompatibilität mit älteren Browsern:
Für Browser, die keine Pfeilfunktionen unterstützen, ist ein Ein alternativer Ansatz mit der Standardfiltermethode ist:
if (vendors.filter(function(e) { return e.Name === 'Magenic'; }).length > 0) { // The same result as above, but filter returns all objects that match and we avoid an arrow function for compatibility }
Das obige ist der detaillierte Inhalt vonWie kann ich Objekte in JavaScript-Arrays basierend auf Attributwerten effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!