一、數組的定義
數組是按次序排列的一組值,單個值稱為元素,他們的位置都有編號,從 0 開始,整個數組用方括號表示。
var arr = [ 12, 34, 56 ];
上面代碼就表示,創(chuàng)建了一個數組,12是0號位置,34是1一號位置,56是2號位置,和Java中的數組下標是一樣的,都是從0 開始。
除了定義時賦值,數組也可以先定義,后賦值。
var arr;
arr[0] = 12;
arr[1] = 34;
arr[2] = 56;
任意一種數據類型都可以放入數組,
var arr = [12,3.14,'a',"123",null,undefined, function (){return true;} ];
上面分別放入了 整形,浮點型,字符型,字符串,null,undefined,函數。
數組也可以放進去,如果放進去數組的話,就構成了多維數組。
二、數組與對象的關系
本質上數組也屬于對象,是字典結構的一個變種。
console.log( typeof [1,2,3] ) //object
上面代碼說明數組是一種特殊的對象,所有typeof運算符,返回數組的類型是object。
數組的特殊性體現在,它的鍵默認是按次序排列的整數(1,2,3,4....),所有數組不用為每個元素指定鍵名,而對象的每個成員都必須指定鍵名,另外,數組以字符串來識別鍵名,非字符串的鍵名會被轉化為字符
var arr = [12, 34, 56];
arr['0'] // 12
arr[0] // 12
上面代碼分別用數值或字符串作為鍵名,都能讀取數組。
需喲注意的是,上面的一條規(guī)定在賦值時也成立,如果一個值可以被轉化為整數,則以該值為鍵名,等于以對應的整數為鍵名,
var a = [];
a['1000'] = 'abc';
a[1000] // 'abc'
a[1.00] = 6;
a[1] // 1
通過上面代碼可以看到,'1000'和 1.00都可以被轉化為整數。
對象有兩種讀取成員的方法:點結構(object.key)和方括號結構(object[key]),但是對于數組的鍵名不能使用點結構,arr.0是非法的,因為單獨的數字不能作為標示符,所以數組成員只能通過 方括號結構來讀取成員。arr[0](方括號是運算符,可以接受數值)。
三、length屬性
數組的length屬性,返回的是數組成員的數量。
var arr = [12,34,56];
console.log(arr.length); //3
JavaScript使用一個32位整數保存數組的元素個數,這意味著,這組成員最多有 2的32次方-1(4294967295),也就是說length屬性的最大值就是4294967295。
數組的length屬性和對象的length屬性是有區(qū)別的,主要是數組,就一定有l(wèi)ength屬性,而對象不一定有。而且,數組的length屬性是一個動態(tài)的值,等于鍵名中最大整數加1。
var arr = ['a', 'b'];
arr.length // 2
arr[2] = 'c';
arr.length // 3
arr[9] = 'd';
arr.length // 10
arr[1000] = 'e';
arr.length // 1001
上面代碼也表示,數組的鍵值不需要連續(xù),length屬性的值總是比最大的那個整數加 1,另外,這也表明數組是一種動態(tài)的數據結構,可以隨時的增減成員。
length屬性是可寫的,如果人為設置一個小于當前成員個數的值,該數組的成員就會自動縮減到length設置的值。
var arr = [ 'a', 'b', 'c' ];
arr.length // 3
arr.length = 2;
新聞熱點
疑難解答