Javascript數組Array基礎介紹_基礎知識

來源:互聯網
上載者:User

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

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

數組來源

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

var arr = [];arr.constructor === Array; // truearr.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為9var 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瀏覽器在strict 模式下也不支援。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.