Javascript數(shù)組Array基礎(chǔ)介紹
來(lái)源:易賢網(wǎng) 閱讀:634 次 日期:2016-07-20 15:46:40
溫馨提示:易賢網(wǎng)小編為您整理了“Javascript數(shù)組Array基礎(chǔ)介紹”,方便廣大網(wǎng)友查閱!

Javascript,一門神奇的語(yǔ)言,它的數(shù)組也同樣獨(dú)特。我們要去其糟粕,取其精華,把常用的最優(yōu)實(shí)踐總結(jié)出來(lái)。如有錯(cuò)誤,請(qǐng)指出。

javascript數(shù)組是一種類數(shù)組的對(duì)象,擁有對(duì)象的特性。當(dāng)屬性名是小而連續(xù)的整數(shù)時(shí),應(yīng)該使用數(shù)組,否則,使用對(duì)象。

數(shù)組來(lái)源

所有的數(shù)組都是Array構(gòu)造出來(lái)的,我們來(lái)測(cè)試一下constructor這個(gè)屬性。

var arr = [];

arr.constructor === Array; // true

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

創(chuàng)建數(shù)組

//數(shù)組字面量方式

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

//構(gòu)造函數(shù)方式

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

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

var arr4 = new Array(9);    // [] 數(shù)組長(zhǎng)度length為9

var arr5 = new Array([9]);   // [[9]] 相當(dāng)于二維數(shù)組

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

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

// 數(shù)組可以存儲(chǔ)任意混合數(shù)據(jù)類型

由于arr4的方式,當(dāng)只有一個(gè)數(shù)字參數(shù)傳遞到Array的構(gòu)造函數(shù)中,構(gòu)造函數(shù)會(huì)返回設(shè)置了length屬性的空數(shù)組。所以推薦使用數(shù)組字面量方式,短小而簡(jiǎn)潔。

檢測(cè)對(duì)象是否為數(shù)組

var arr1 = [1, 2, 3];

typeof(arr1); // object

眾所周知,typeof不能正確檢測(cè)類型。

arr1 instanceof Array; //true

instanceof 方式在一個(gè)網(wǎng)頁(yè)內(nèi)是沒有問題,一旦嵌套其他網(wǎng)頁(yè),便存在兩個(gè)全局作用域,互相調(diào)用時(shí)的檢測(cè)就會(huì)出問題。

Array.isArray(arr1); // true

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

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

最后一種方式是檢測(cè)類型的最好方法。

數(shù)組長(zhǎng)度

數(shù)組的length也是它的屬性,增大length也不會(huì)發(fā)生越界錯(cuò)誤。

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

var arr1 = [];

arr1[9] = 1; // 長(zhǎng)度為10,只包含一個(gè)元素的數(shù)組

設(shè)小值將將會(huì)把屬性名大于等于length的屬性刪除。

如果將length值設(shè)為0,相當(dāng)于清空數(shù)組。

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

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

arr2.length = 0; // []

數(shù)組遍歷

遍歷數(shù)組不要使用for in循環(huán)遍歷數(shù)組,因?yàn)閒or in會(huì)遍歷原型鏈上的所有屬性,但我們并不需要這么多。推薦使用for循環(huán)的方式。

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循環(huán)方式

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

  console.log(arr1[i]);

}

//輸出如下

// 1

// 2

// 3

我們看到for in方式多出了一個(gè)test值,可以使用hasOwnProperty函數(shù)排除,但那會(huì)比f(wàn)or循環(huán)的方式慢很多。

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

小結(jié)

簡(jiǎn)單介紹了Array的相關(guān)基礎(chǔ)知識(shí),到這里也算是能對(duì)Array有更全面的理解了。下一篇介紹Array的方法。

Javascript雖然有很多不太容易弄懂的地方,隨著長(zhǎng)時(shí)間的學(xué)習(xí),我已經(jīng)慢慢地愛上它了(因?yàn)楝F(xiàn)在沒有妹子讓我愛)。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:Javascript數(shù)組Array基礎(chǔ)介紹
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)