JS - 004 - Array複習

004

+ 主題 - array應用

github連結

+ 應用 - 

  1. Q | Filter the list of inventors for those who were born in the 1500's取得value,利用filter篩選出第一張表單中,出生於16世紀的科學家
    filter:保留功能。從原陣列進行篩選,產生新陣列,但又不影響原陣列。
    return true; 表示保留  return false; 表示不留下
    A | 
    let InvFilter = inventors.filter ( inv => {
        return inv.year>=1500 && inv.year<1600;
    })
    console.log ( InvFilter );
     
  2. Q | Give us an array of the inventors'  first and lastname 利用map建立個新陣列是包含科學家的姓名
    map : 製造功能。轉換原陣列的元素,但又不影響原陣列。
    return true; 則將每個元素轉換為true
    A | 
    let InvMap = inventors.map ( inv => {
        return inv.first + ', ' + inv.last;
    })
    console.log ( InvMap );

  3. Q | Sort the Inventors by birthdate, oldest to youngest 利用map建立個新陣列是包含科學家的姓名
    sort : 排序功能。改變原陣列。一定要加callback function,效能上無法保證,可能會出錯。兩個參數,互相比較。
    function(a,b){
    return a-b; 若<0則升冪排序,a在b前  若>0則b在a前  若=0則不變
    }
    A |
    let InvSort = inventors.sort ( function ( a, b ){
        return a.year - b.year;
    }) 

    console.log ( InvSort );

  4. Q | How many year did inventors live 利用reduce建立個新陣列是所有科學家的壽命加總
    reduce : 累積功能。將原陣列的每個元素傳入function,化為單一值,做出新陣列。
    A | 
    let live=inventors.reduce ( function ( total , inv ){
        return total + inv.passed - inv.year ;
    } ,0 )

    如果不用reduce的寫法
    let total=0;
    inventors.forEach ( inv => {
        total += inv.passed - inv.year;
    });

  5. Q | Sort the inventors by years live 利用sort依照壽命長短排序A |let InvSortLive = inventors.sort ( function ( a , b ){
        return ( a.passed - a.year ) - ( b.passed - b.year );
    })

  6. Q | Sort the people alphabetically by last name 利用sort依照姓氏的字母順序排序
    split : 切字串。
    A |
    let SortPeople = people.sort ( function ( a , b ){
        let aAry = a.split(", ");
        let bAry = b.split(", ");
        return aAry[1]>bAry[1] ? 1 : 0;
    })

  7. Q | Sum up the instances of each of these 利用reduce計算每個元素有幾個,放進新產生的物件之中
    A |
    let Sum = data.reduce ( function ( obj , item ){
        if ( !obj [ item ] ){
            obj [ item ] =1;
        } else {
            obj [ item ] ++;
        });
        return obj;
    },{});
    console.log( Sum );

    如果不用reduce的寫法

    let obj = {};
    data.foreach ( item => {
        if ( !obj [ item ] ){
            obj [ item ] =1;
        } else {
            obj [ item ] ++;
    });
    console.log ( obj );

留言