2017-08-24 4 views
-2

Was mache ich hier falsch?Javascript: Filter Array von Objekten

var locations = [ 
 
     { id: 1, name: 'N'}, 
 
     { id: 2, name: 'P'} 
 
    ] 
 

 
var employee = { location_id: 1 } 
 

 
locations.filter((location) => { 
 
    return location.id == employee.location_id 
 
}); 
 

 
console.log(locations);

diese kehrt undefined wenn ich versuche, es { id: 1, name: 'N'} zurückkehren zu machen.

+5

Dieser Code funktioniert gut für mich. –

+0

Es gibt tatsächlich ein Array mit dem Objekt zurück. Versuchen Sie, 'Array.prototype.findIndex' zu verwenden, um den Index des Objekts im Array zu erhalten. – lukaleli

+0

Dieser Code erzeugt auf keinen Fall "undefined". Also, wenn du das bekommst, musst du etwas ganz anderes machen. –

Antwort

4

filter() Funktion ist nicht wandelbar - was bedeutet es eine neue Array mit den gefiltert Objekte zurückgibt und nicht ‚mutieren‘ das ursprüngliche Array tun - Sie können es auf eine andere Variable zuweisen müssen - siehe Demo unter:

locations = [ 
 
    { id: 1, name: 'N'}, 
 
    { id: 2, name: 'P'} 
 
] 
 

 
employee = { location_id: 1 } 
 

 
var result = locations.filter((location) => { 
 
    return location.id == employee.location_id 
 
}) 
 

 
console.log(result);

1

Sie benötigen eine Variable für das Ergebnis der Filterung mit Array#filter

Die filter() Methode erzeugt ein neues Array mit allen Elementen, die den Test durch die vorgesehene Funktion implementiert passieren.

var locations = [ 
 
     { id: 1, name: 'N'}, 
 
     { id: 2, name: 'P'} 
 
    ], 
 
    employee = { location_id: 1 }, 
 
    result = locations.filter((location) => { 
 
     return location.id == employee.location_id 
 
    }); 
 

 
console.log(result);

1

Sie müssen das Ergebnis der .filter() speichern. Es mutiert nicht das ursprüngliche Array.

Nebenbei bemerkt, können Sie Ihre Rückruffunktion verkürzen, indem Sie die geschweiften Klammern und die Rückgabeanweisung entfernen.

locations = locations.filter(loc => loc.id == employee.location_id); 
Verwandte Themen