Day 4: Array Cardio 💪

Global Variables


      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 }
      ];
    
      const people = [
        'Beck, Glenn', 'Becker, Carl', 'Beckett, Samuel', 'Beddoes, Mick', 
        'Beecher, Henry', 'Beethoven, Ludwig', 'Begin, Menachem', 'Belloc, Hilaire', 
        'Bellow, Saul', 'Benchley, Robert', 'Benenson, Peter', 'Ben-Gurion, David', 
        'Benjamin, Walter', 'Benn, Tony', 'Bennington, Chester', 'Benson, Leana', 
        'Bent, Silas', 'Bentsen, Lloyd', 'Berger, Ric', 'Bergman, Ingmar', 
        'Berio, Luciano', 'Berle, Milton', 'Berlin, Irving', 'Berne, Eric', 
        'Bernhard, Sandra', 'Berra, Yogi', 'Berry, Halle', 'Berry, Wendell', 
        'Bethea, Erin', 'Bevan, Aneurin', 'Bevel, Ken', 'Biden, Joseph', 'Bierce, Ambrose',       
        'Biko, Steve', 'Billings, Josh', 'Biondo, Frank', 'Birrell, Augustine', 
        'Black, Elk', 'Blair, Robert', 'Blair, Tony', 'Blake, William'
      ]; 
    

Exercises:

  1. Filter the list of inventors for those who were born in the 1500's using Array.prototype.filter().
    const fifteenCenturyInventors = inventors.filter(inventor => (1500 <= inventor.year && inventor.year <= 1599));      

    Output:

    * Some outputs have been simplified to just names, for full output see the console.

  2. Give us an array of the inventors' first and last names using Array.prototype.map().
    const inventorNames = inventors.map(inventor => `${inventor.first} ${inventor.last}`);      

    Output:
  3. Sort the inventors by birthdate, oldest to youngest by using Array.prototype.sort().
    const birthdaySort = inventors.sort((inventorA, inventorB) => inventorB.year - inventorA.year);      

    Output:
  4. Count the number of years that all the inventors lived using Array.prototype.reduce().
    const invetorLives = inventors.reduce((counter, inventor) => counter + (inventor.passed - inventor.year), 0);      

    Output:
  5. Sort the inventors by years lived by using Array.prototype.sort().
    const yearsLivedSorted = inventors.sort((inventorA, inventorB) => (inventorA.passed  - inventorA.year) - (inventorB.passed  - inventorB.year));      

    Output:
  6. Create a list of Boulevards, from the link, in Paris that contain 'de' anywhere in the name using the sort() method. https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris
    
    const links = Array.from(category.querySelectorAll('a')); // NOTE: you can call querySelector on any html object        
    const category = document.querySelector('.mw-category');
    const de = links
     .map(link => link.innerHTML)
     .filter(streetName => streetname.indexOf("de") >= 0);
            
    Output soon to come once an ajax call is implemented
  7. Sort the people alphabetically by last name
    
      const sortedInventors = people.sort((persA, persB) => {      
        const persALastName = persA.split(',')[0];
        const persBLastName = persB.split(',')[0];
        persALastName < persBLastName ? -1 : 1;      
      });
            

    Output:
  8. Sum up the instances using a reducer
    
    const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];         
    const reducer = (obj, item, idx, array) => {
      if (!obj.hasOwnProperty([item])) {
        obj[item] = 0;  
      } 
      
      obj[item] += 1;      
      return obj;
    }
    const transportation = data.reduce(reducer, {});
            

    Output: