記筆記頗有必要——相信我,大多數人的記憶力是不可靠的。 javascript
——《與時間作朋友》李笑來java
值的有序集合數組
弱類型prototype
數組中的元素能夠是各類類型的code
null
對象
undefined
ip
...原型
空間有限it
0~2^32-1( 42_9496_7295)console
var arr = [['ff',{ee:'dd'}],[e,dd]] var arr = [,,] //2 undefined
new Array(100);//100undefined new Array(1,2,'hi',{'touch':'me'})//[1,2,'hi',{touch:'me'}]
.push(xx)
//添加到後面
返回添加後數組的數組長度
//等於 arr[arr.length] = xx
.unshift()
//添加到前面
(單純刪除)
arr.length -= 1;
//刪除最後一元素
.shift()
//把第一個犧牲出去
.pop()
//把最後一個犧牲出去
delete arr[0] // 至關於 arr[0] = undefined
略
做爲一個對象來遍歷這個數組時
當Array原型上定義了一個屬性的時候,for i in arr
一個數組的時候,將會把原型上的這個屬性也遍歷出來,無論這個數組是在這以前仍是以後生成的。
var arr = [1,2,3] Array.prototype.x = 'inherited' for(i in arr){ console.log(i + ' ' + arr[i]); } //1 1 //2 2 //3 3 //x 'inherited'
解決方式
for(i in arr){ if(arr.hasOwnProperty(i){ //do somethings } }
遍歷的順序不肯定
由於對象不是有序的。
經過嵌套的循環
var arr = [[0,1],[1,2],[2,3]] for(var i =0;i<arr.length;i++){ console.log('row ' + i) for(var j =0;j<arr[i].length;j++){ console.log(arr[i][j]); } }
二位平面定位
三位空間點定位(使用三維數組
內部的元素構不成一個連續序列
通常length屬性值比實際元素個數大
將數組比做一棟出租屋,裏面按照輸入的參數建了好幾個房間。
除了部分建造時就不打算用來出租的空房間以外
若是存在沒有人住的空房間
那麼這個出租屋就是「稀疏出租屋」。
//按照輸入的參數建了好幾個房間 var apartment = [1,undefined,,4,'watch'] // 建造時就不打算用來出租的空房間 apartment[1] // undefined 1 in apartment // true // 沒有人住的空房間 aprtment[2] // undefined 2 in apartment // false // 稀疏出租屋 apartment; // [1,undefined,,4,'watch']
這個空房間的產生可能因爲:
建房子的時候輸入的參數沒有指明用途。var empty = [,,]
出租過程當中趕走了某些房客。delete arr[1]
具體來講就是說: 存在某個空間沒有元素的數組即是稀疏數組
in
{number} in {arr}
將會確認 arr[number]
這個位置有沒有元素存在。
arr[i] == undefined
同檢查元素是否存在