創(chuàng)建數(shù)組
數(shù)組,即Array。在JavaScript中用的頻率還是蠻高的,而且JS的數(shù)組相當(dāng)靈活。
首先我們應(yīng)該知道,數(shù)組是JS內(nèi)置的眾多對(duì)象之一,說白了,數(shù)組也是對(duì)象。既然是對(duì)象,那么對(duì)象的特征數(shù)組也肯定有。
我們先來創(chuàng)建創(chuàng)建數(shù)組,創(chuàng)建數(shù)組有以下幾種方法:
1.new + 構(gòu)造函數(shù)
來看以下代碼
var arr1 = new Array();
定義一個(gè)變量arr1,然后使用new+Array構(gòu)造函數(shù)創(chuàng)建數(shù)組,注意,這樣創(chuàng)建出來的是一個(gè)空數(shù)組,可以用數(shù)組的length
屬性來查看
console.log(arr1.length); //返回0
上面說了,Array也是對(duì)象,那么對(duì)象有屬性有方法,Array肯定也有屬性和方法咯,length就是Array的屬性之一,用于獲取數(shù)組長(zhǎng)度
那么我們?nèi)绾蝿?chuàng)建有長(zhǎng)度或內(nèi)容的數(shù)組呢?看以下代碼
var arr2 = new Array(3);
arr2[0] = "tom";
arr2[1] = "halen";
同樣使用構(gòu)造函數(shù)創(chuàng)建一個(gè)數(shù)組,只不過我們這次在括號(hào)內(nèi)定義了數(shù)組的長(zhǎng)度為3,接下來我們使用變量[下標(biāo)]的方式來給數(shù)組賦值。
這是一種很常見的方式,使用這種方式我們就可以給數(shù)組某個(gè)下標(biāo)位置賦值,同時(shí)也能獲取某個(gè)下標(biāo)對(duì)應(yīng)的值。
console.log(arr2[2]); //返回undefined,因?yàn)槲覀兩厦娌]有給下標(biāo)位置2進(jìn)行賦值,所以默認(rèn)是undefined
同樣的,我們可以直接在括號(hào)內(nèi)放入值而不必挨個(gè)賦值,
var arr3 = new Array("tom","alen","Jane");
console.log(arr3);// 返回["tom","alen","Jane"];
2.字面量方法
我們?nèi)粘慗S更多的是使用對(duì)象字面量方式來創(chuàng)建對(duì)象,如下
var arr4 = ["hello","world",false,124];
看起來是不是簡(jiǎn)便多了?
檢測(cè)數(shù)組
檢測(cè)數(shù)組的方法有2種,一種就是大家所熟知的instanceof
操作符,例如
var array1 = ["124",124,false];
console.log(array1 instanceof Array);//返回true
instanceof
操作符用來檢測(cè)引用類型,例如Function,Array等,因?yàn)閿?shù)組也是對(duì)象,所以下面的代碼同樣返回true
.
console.log(array1 instanceof Object); //返回true
另外一種就是ECMAscript5新增加的Array.isArray()
方法,這個(gè)方法主要是用來解決數(shù)組跨框架判斷錯(cuò)誤的問題的,因此建議在瀏覽器支持的情況下優(yōu)先使用該方法。栗子如下
console.log(Array.isArray(array1)); //返回true
var a = "something";
console.log(Array.isArray(a)); //肯定返回false咯