2018-03-21 JS入門2(阮一峰)

1. 數(shù)組

數(shù)組本身是對象,是一種特殊的對象

1.length

數(shù)組不能用點結(jié)構(gòu)讀取

var a = [1,2];
a[0] === 1        //true
a.0               //  SyntaxError: Unexpected number
a.length === 2    //  true,數(shù)組默認有l(wèi)ength值

a[9] = 10;
a.length === 10   //  true,JavaScript還是會認為長度是10,會把中間的值都當作empty

JavaScript用32位整數(shù)保存數(shù)組的長度,所以數(shù)組最多只能存232-1個數(shù),數(shù)組length的值是可以設置的,a.length = 0可以用來清空數(shù)組。

var a = [1,2,3];
a.length = 0;
a   // []

length的長度是可以設置的,若length大于原來的值,則多出來的叫空位,讀取空位會返回undefined,用in運算符會返回false。

var a = [1,2,3];
a.length = 10
a[5]    // undefined

2 in a  // true,in檢測的是key,而不是value和length
3 in a  // false,in檢測的是key,而不是值

將數(shù)組的鍵分別設為字符串和小數(shù),結(jié)果都不影響length的值,所以length只和數(shù)字鍵有關(guān)。

var a = [];

a['p'] = 'abc';
a.length === 0     //true
a[2.1] = 'abc';
a.length === 0     //true   

如果數(shù)組的鍵名是添加超出范圍的數(shù)值,該鍵名會自動轉(zhuǎn)為字符串。

a[-1] = 'a';
a[Math.pow(2, 32)] = 'b';

a.length === 0    //true
a[-1] === "a"    //true
a[4294967296] === "b"  //true

2. in

in檢測的是鍵名,而不是值

var arr = [ 'a', 'b', 'c' ];
2 in arr  // true
'2' in arr // true
4 in arr // false ,不存在就是false

arr[100] = 'a';
100 in arr // true
99 in arr // false,空位也會被認為是false

3. 遍歷數(shù)組

var colors = ['red', 'green', 'blue'];
colors.forEach(function (color) {    //function里的參數(shù)就是每一項的值
  console.log(color);
});        //red green blue

用length遍歷數(shù)組時,會把空位輸出為undefined,但使用數(shù)組的forEach方法、for...in結(jié)構(gòu)、以及Object.keys方法進行遍歷,空位都會被跳過,只有當數(shù)組的值是undefined時,它們才會輸出undefined,所以用length遍歷數(shù)組時要小心空位

var a = [ ,2,3];

for(var i=0;i<a.length;i++){
    console.log(a[i]);            //undefined   2   3
}

a.forEach(function (x, i) {       //x是value,i是key
    console.log(i + ':' + x);     // 1:2   2:3
});

a = [undefined,2,3];

a.forEach(function (x, i) {
    console.log(i + ':' + x);     // 0:undefined   1:2   2:3
});

4. delete

var a = [1, 2, 3];
delete a[1];

a[1] // undefined
a.length // 3

delete不會影響length,所以用length遍歷數(shù)組的時候要小心

5.類似數(shù)組的對象

可以把類似數(shù)組對象轉(zhuǎn)為真正的數(shù)組(目前看不懂),詳情見阮一峰-數(shù)組-類似數(shù)組的對象

6.

typeof [1,2,3];      //      'object'  注意返回字符串

本文版權(quán)歸彭奕澤和饑人谷所有

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容