[ JavaScript 10 ] Array 類型的內建函式


Posted by tzutzu858 on 2020-06-24

MDN 網站介紹 Array


  • .join('x') 把每個元素用x接在一起

    var elements = ['Fire', 'Air', 'Water']
    console.log(elements.join('-'))
    // 印出 Fire-Air-Water
    
  • .map() 映射,將函式應用於每個元素
    =>箭頭函式運算式擁有比函式運算式還簡短的語法。

    var array1 = [1, 4, 9, 16]
    var map1 = array1.map(x => x * 2)
    console.log(map1)
    // 印出 [2, 8, 18, 32]
    
    var array1 = [1, 4, 9, 16]
    function map1(x){
       return x * 2
    } 
    console.log(array1.map(map1))
    
    var array1 = [1, 4, 9, 16]
    console.log(array1.map(function map1(x){
                    return x * 2
              } )
                   .map(function map1(x){
                   return x * -1
              } )
             // 可以無限往下接一直接.map
    )
    // 印出 [-2, -8, -18, -32]
    

map calls a provided callback function once for each element in an array, in order, and constructs a new array from the results.
map 會將所有陣列中的元素依序分別傳入一次至 callback 函式當中,並以此回呼函式每一次被呼叫的回傳值來建構一個新的陣列。 MDN .map文章參考

  • map 內部是做了 immutable 的機制,Array.prototype 底下的這些高階函式
    大多都具有這樣函數式編程裡非常注重的特性 - immutable,不會去改變資料
    來源本身原有的值
  • .filter()會把東西過濾掉,true會留下來,false

    var array1 = [1, -4, 9, -16]
    console.log(array1.filter(function(x){
                          return x > 0
                     })
    )
    // 印出 [1, 9]
    

    要注意每個函式回傳的型態

  • .slice()分片

    var array1 = [1, -4, 9, -16]
    console.log(array1.slice(2)) //從索引值 2 後面的全都要保留
    // 印出 [9, -16]
    
    var array1 = [1, -4, 9, -16, 1 , 2 , 3]
    console.log(array1.slice(2,5)) //從索引值 2 後面到 5 停止
    // 印出 [9, -16, 1]
    
  • .splice()會改變原本的陣列

    const months = ['Jan', 'March', 'April', 'June'];
    months.splice(4, 1, 'May');
    // replaces 1 element at index 4
    console.log(months);
    // expected output: Array ["Jan", "Feb", "March", "April", "May"]
    

const宣告的是常數,常數在被宣告時就務必要指定給值,不然會產生錯誤。
而且常數是不可再指定(can't re-assignment)的。
譬如說: 計算圓面積時,π這個值是固定的,並且希望之後也不要被更改,這時候我們就可以使用const將他宣告成常數。
JavaScript 宣告: var、let、const

  • .sort()會改變原本的陣列
    const months = ['March', 'Jan', 'Feb', 'Dec'];
    months.sort();
    console.log(months);
    // expected output: Array ["Dec", "Feb", "Jan", "March"]
    //按照 abcd....字母順序排
    const array1 = [1, 30, 4, 21, 100000];
    array1.sort();
    console.log(array1);
    // expected output: Array [1, 100000, 21, 30, 4]
    //按照字串排,所以先比第一個字,再比第二個字
    
    // 由小排到大
    var arr = [1, 36, 21, 30, 4]
    arr.sort(function(a,b){
     if (a===b) return 0 
     if (b>a) return -1  // 後面比前面大,不換
     return 1  
    })
    console.log(arr)  // 印出 [1, 4, 21, 30, 36]
    
    // 由大排到小
    var arr = [1, 36, 21, 30, 4]
    arr.sort(function(a,b){
     return b-a // b-a 如果是正數,代表要換位置,那數字比較大的就會一直往前排
    })
    console.log(arr)
    

.sort() Return value
The sorted array. Note that the array is sorted in place, and no copy is made.


#javascript







Related Posts

[MTR04] W2 D14 練習四:請寫出一個叫做 star 的 function 並且接受一個參數 n,能回傳 n 個 *。

[MTR04] W2 D14 練習四:請寫出一個叫做 star 的 function 並且接受一個參數 n,能回傳 n 個 *。

[20] 強制轉型 - 轉換值、ToString、JSON

[20] 強制轉型 - 轉換值、ToString、JSON

30-Day LeetCoding Challenge 2020 April Week 1 || Leetcode 解題

30-Day LeetCoding Challenge 2020 April Week 1 || Leetcode 解題



Comments