-1

I am trying to filter an array

I keep getting back the array in full instead of just the filtered elements. How can I get it to filter elements?

       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);

1
  • You need to retain the result in something - it does not act on the array itself Commented Feb 28, 2017 at 12:51

1 Answer 1

3

filter doesn't change the array, it instead returns a new array containing just the items that matched the creteria. Use this:

var oldEnough = inventors.filter(isOldEnough);

And please make the filtering function cleaner:

function isOldEnough(inventor) {
  return inventor.year >= 1500 && inventor.year <= 1600;
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.