先說結論
根據使用場景,length
不一定代表數組的長度。實際上,length
是指大於數組中最後一個元素的索引的32位無符號整數。
稠密數組(Dense Array) vs 稀疏數組(Sparse Array)
稠密數組是指一個數組的元素由0
開始連續索引。
1 | const denseArray = ["A", "B", "C"]; |
顯然而見,稀疏數組就是一個不連續索引的數組
1 | const sparseArray = ["A", , "C", "D"]; |
甚麼時候length是指元素個數
當數組是稠密數組時,length
是指元素個數。
1 | const fruits = ['orange', 'apple', 'banana']; // fruits 是稠密數組 |
甚麼時候是最後一個索引+1
當數組是稀疏數組,length
等於最後一個索引加一,但不代表元素個數。
1 | const animals = ['cat', 'dog', , 'monkey']; // animals 是稀疏數組 |
修改length
JavaScript允許修改length
屬性,可以刪除元素或令數組變成稀疏。
1 | const numbers = [1, 3, 5, 7, 8]; |
當把length
設置為大於元素個數時,會令數組變成稀疏。
1 | var osTypes = ['OS X', 'Linux', 'Windows']; |