js04 - Array Cardio Day 1

主要学习js中数组的过滤方法

<script>
    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 flavours = ['Chocolate Chip', 'Kulfi', 'Caramel Praline', 'Chocolate', 'Burnt Caramel', 'Pistachio', 'Rose', 'Sweet Coconut', 'Lemon Cookie', 'Toffeeness', 'Toasted Almond', 'Black Raspberry Crunch', 'Chocolate Brownies', 'Pistachio Almond', 'Strawberry', 'Lavender Honey', 'Lychee', 'Peach', 'Black Walnut', 'Birthday Cake', 'Mexican Chocolate', 'Mocha Almond Fudge', 'Raspberry'];

    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'];

    // Array.prototype.filter()
    // 1. Filter the list of inventors for those who were born in the 1500's
    const fifteen = inventors.filter(function (inventor) {
      if (inventor.year >= 1500 && inventor.year < 1600) {
        return true
      }
    })
    console.log("1500's")
    console.log(fifteen)
    const __fifteen = inventors.filter(inventor => (inventor.year >= 1500 && inventor.year < 1600))
    console.table(__fifteen)
    // Array.prototype.map()
    // 2. Give us an array of the inventors' first and last names
    const fullName = inventors.map(inventor => (inventor.first + ' ' + inventor.last))
    console.log("fullname")
    console.log(fullName)

    // Array.prototype.sort()
    // 3. Sort the inventors by birthdate, oldest to youngest
    const older = inventors.sort(function (inventora, inventorb) {
      for (var i = 0; i < inventors.length; i++) {
        const inventora = inventors[i]
        const inventorb = inventors[i + 1]
        if (inventora.year > inventorb.year) {
          return -1
        } else {
          return 1
        }
      }
    })
    console.log('olderList')
    console.log(older)

    const ordered = inventors.sort(function (firstName, secondName) {
      if (firstName.year > secondName.year) {
        return 1;  //	  对 sort 函数,返回值为 -1 排在前面,1 排在后面
      } else {
        return -1;
      }
    });
    console.table(ordered);

    const __ordered = inventors.sort((a, b) => (a > b) ? 1 : -1);
    console.table(__ordered);
    // Array.prototype.reduce()
    // 4. How many years did all the inventors live?
    let total = 0;
    let totalArr = [];
    for (i = 0; i < inventors.length; i++) {
      inventors[i].alive = inventors[i].passed - inventors[i].year
      totalArr.push(inventors[i].alive)
    }
    for(n = 0 ; n < inventors.length; n++){
      total = total + parseInt(totalArr[n])
    }
    console.log('totallive')
    console.log(total)
    // 5. Sort the inventors by years lived
    const alive = inventors.sort(function (alivea,aliveb){
      if(alivea.passed-alivea.year > aliveb.passed-aliveb.year){
        return 1
      }else{
        return -1
      }
    })
    console.log('alive')
    console.log(alive)

    // 6. create a list of Boulevards in Paris that contain 'de' anywhere in the name
    // https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris


    // 7. sort Exercise
    // Sort the people alphabetically by last name
    const lastList  = inventors.sort((lastA,lastB) => {
      return (lastA.last > lastB.last) ? 1 : -1
    })
    console.log('lastList')
    console.log(lastList)
    // 8. Reduce Exercise
    // Sum up the instances of each of these
    const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck'];
    const reduce = data.reduce((obj,item)=>{
      if(!obj[item]){
        obj[item] = 0
      }
      obj[item]++;
      return obj
    },{})
    console.log(reduce)
  </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值