iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

寇丁人妻的前端書蟲日誌系列 第 26

Day26:JavaScript 設計模式 優良部份 Chapter06 陣列 筆記精要

  • 陣列是記憶體的一種線性分配,其中的組件更據計算偏移量(整數)而存取。陣列可以式非常快速的資料結構。
  • JavaScript 沒有類似陣列的東西。JavaScript 提供了類似陣列的物件。它把索引轉換成字串。比實際的陣列慢,但更方便使用。

陣列實字

  • 陣列實字提供方便的新陣列值做註記。
  • 以方括號圍起零到多個值,並以逗號分隔。
  • 陣列具有序列。
  • 多數語言陣列元素都必須同型別,但 JavaScript 不用。

length 特性

  • length,陣列中最大整數加 1,不一定是陣列數量。
  • length 也可以明確設定,設定數值比元素數量多,並不會分配多的空間給陣列。
  • 新的陣列元素,可藉由指派給陣列目前的 length 而被附加至尾端。
arr[arr.length] = 'a';

刪除

  • 陣列是物件,所以 delete 運算子可以刪除陣列的元素。
  • 也可以用 split 方法來刪除。
delete numbers[2];
// ['zero','one',undefined,'go']
numbers.splice(2,1);
//  ['zero','one','go']

列舉

  • for in 無法保證特性的順序。
  • 從原型鍊裡挖出非預期性的問題。
  • 可以使用 for 迴圈處理。

困惑之處

  • 陣列是物件,在 JavaScript 沒有很好的區分機制,所以可以用 is_array 的函式式去區分。
 var is_array = function(value){
    return value && 
           typeof value === 'object' && 
           value.constructor === Array;
 };

方法

  • JavaScript 提供一組對陣列行動的方法,這些方法就是儲存在 Array.prototype 裡的函式。
  • 陣列就是物件,所以他也可以拓展 prototype。

陣列維度

  • JavaScript 陣列通常不會初始化,如果你用 [] 建立新陣列,它會是空的
  • 如果取用不存在的元素,會出現 undefined 值。
  • 想製作二維陣列,或陣列中的陣列時,必須自己建立,我們可以擴充:
Array.matrix = function (m,n, initial){
     var a, i, j,mat = [];
     for (i = 0; i < m; i += 1){
        a = [];
        for (j = 0; j < n; j += 1){
          a[j] = 0;
        }
        mat[i= a;
     }
     return mat;
 }
 // 製作一個 4 * 4 填滿 0 的矩陣
 var myMatrix = Array.matrix(4,4,0);
 document.writeln(myMatrix[3][3]);  // 0

資料來源:《JavaScript 優良部份》 Douglas Crockford 著 歐萊禮
筆記純屬推廣及分享,如有侵權,請告知。
Please advise to remove immediately if any infringement caused.


上一篇
Day25:JavaScript 設計模式 優良部份 Chapter05 繼承 筆記精要
下一篇
Day27:JavaScript 設計模式 優良部份 Chapter07 正則表達式 筆記精要(上)
系列文
寇丁人妻的前端書蟲日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言