2017-02-28 1 views
-1

Ich versuche, ein Array zu filternJavascript Array-Filter von Jahr

Ich bekomme immer wieder das Array in voller statt nur die gefilterten Elemente. Wie kann ich Filterelemente erhalten?

 const inventors = [ 
 
     { first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 }, 
 
     { first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 }, 
 
     { first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 }, 
 
     { first: 'Marie', last: 'Curie', year: 1867, passed: 1934 }, 
 
     { first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 }, 
 
     { first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 }, 
 
     { first: 'Max', last: 'Planck', year: 1858, passed: 1947 }, 
 
     { first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 }, 
 
     { first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 }, 
 
     { first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 }, 
 
     { first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 }, 
 
     { first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 } 
 
    ]; 
 

 

 

 
    function isOldEnough(inventor) { 
 
     if(inventor.year >= 1500 && inventor.year <= 1600){ 
 
      return inventor; 
 
     } 
 
    } 
 

 
    inventors.filter(isOldEnough) 
 
    console.log(inventors);

+0

Sie müssen das Ergebnis in etwas behalten - es wirkt nicht auf das Array selbst – mplungjan

Antwort

3

filter nicht das Array ändern, es stattdessen gibt ein neues Array nur die Elemente enthält, die den creteria abgestimmt. Verwenden Sie diese Option:

var oldEnough = inventors.filter(isOldEnough); 

Und bitte die Filterfunktion sauberer machen:

function isOldEnough(inventor) { 
    return inventor.year >= 1500 && inventor.year <= 1600; 
}