Javascript數組Array基礎介紹
來源:易賢網 閱讀:765 次 日期:2016-07-20 15:46:40
溫馨提示:易賢網小編為您整理了“Javascript數組Array基礎介紹”,方便廣大網友查閱!

Javascript,一門神奇的語言,它的數組也同樣獨特。我們要去其糟粕,取其精華,把常用的最優實踐總結出來。如有錯誤,請指出。

javascript數組是一種類數組的對象,擁有對象的特性。當屬性名是小而連續的整數時,應該使用數組,否則,使用對象。

數組來源

所有的數組都是Array構造出來的,我們來測試一下constructor這個屬性。

var arr = [];

arr.constructor === Array; // true

arr.constructor === Array.prototype.constructor; // true

創建數組

//數組字面量方式

var arr1 = [1, 2, 3]; // [1,2,3]

//構造函數方式

var arr2 = new Array();    // [] 空數組

var arr3 = new Array('9');   // ["9"] 一個字符串元素

var arr4 = new Array(9);    // [] 數組長度length為9

var arr5 = new Array([9]);   // [[9]] 相當于二維數組

var arr6 = new Array(1, 2, 3); // [1, 2, 3]

var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true);

// 數組可以存儲任意混合數據類型

由于arr4的方式,當只有一個數字參數傳遞到Array的構造函數中,構造函數會返回設置了length屬性的空數組。所以推薦使用數組字面量方式,短小而簡潔。

檢測對象是否為數組

var arr1 = [1, 2, 3];

typeof(arr1); // object

眾所周知,typeof不能正確檢測類型。

arr1 instanceof Array; //true

instanceof 方式在一個網頁內是沒有問題,一旦嵌套其他網頁,便存在兩個全局作用域,互相調用時的檢測就會出問題。

Array.isArray(arr1); // true

Array.isArray() 是ECMAScript5 新增的方法,沒有缺陷。唯一的問題是ie8瀏覽器不支持,ie9瀏覽器在嚴格模式下也不支持。

Object.prototype.toString.apply(arr1).slice(8, -1); // Array

最后一種方式是檢測類型的最好方法。

數組長度

數組的length也是它的屬性,增大length也不會發生越界錯誤。

length值等于數組最大的整數屬性名加1。

var arr1 = [];

arr1[9] = 1; // 長度為10,只包含一個元素的數組

設小值將將會把屬性名大于等于length的屬性刪除。

如果將length值設為0,相當于清空數組。

var arr2 = [1, 2, 3, 4, 5];

arr2.length = 3; // [1, 2, 3]

arr2.length = 0; // []

數組遍歷

遍歷數組不要使用for in循環遍歷數組,因為for in會遍歷原型鏈上的所有屬性,但我們并不需要這么多。推薦使用for循環的方式。

var arr1 = [1, 2, 3];

arr1.test = 9;

//for in 方式

for(var prop in arr1){

  cosole.log(prop, arr1[prop]);

}

// 輸出如下

// 0 1

// 1 2

// 2 3

// test 9

//for循環方式

for(var i = 0, len = arr1.length; i < len; i++){

  console.log(arr1[i]);

}

//輸出如下

// 1

// 2

// 3

我們看到for in方式多出了一個test值,可以使用hasOwnProperty函數排除,但那會比for循環的方式慢很多。

緩存數組長度很有必要的一步,每次訪問是有性能開銷的(最新的瀏覽器在這方面做了優化)。

小結

簡單介紹了Array的相關基礎知識,到這里也算是能對Array有更全面的理解了。下一篇介紹Array的方法。

Javascript雖然有很多不太容易弄懂的地方,隨著長時間的學習,我已經慢慢地愛上它了(因為現在沒有妹子讓我愛)。

更多信息請查看網絡編程
易賢網手機網站地址:Javascript數組Array基礎介紹
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看