JavaScript學習筆記——引用類型:Array類型

在JavaScript中,數組中的每一項可以保存任何類型的數據,比如,數組的第一項可以是字符串,第二項可以保存數值,第三項可以是對象。

創建數組的方法有兩種,第一種是使用Array()構造函數,

var color = new Array();
var val = new Array(3);//數組長度爲3
var name = new Array("Greg");//包含“Greg”一項

第二種是採用字面量表示法,數組字面量由一對方括號表示,多組數據之間用逗號隔開

var color = ["blue","red"];

數組的length屬性不是隻讀的,通過設置這個屬性,可以從數組的末尾設置或添加新項。

var color = ["blue","red","green"];
color.length = 2;
alert(color[2]);//undefined,刪掉了第三項
color.length = 3;
alert(color[2]);//undefined,新增了一項
color[color.length] = "yellow";//新增了一項

1、轉換方法
所有對象都具有toLocalSring(),toString(),valueOf()方法。

var color = ["blue","red","green"];
alert(color);//blue,red,green
alert(color.toString());//blue,red,green
alert(color.valueOf());//blue,red,green

由於alert()要接受字符串參數,所以它在後臺會調用toString方法,所以alert(color)與alert(color.toString())輸出相同。但當toLocalSring函數與toString函數定義返回內容不同時,輸出也不同。
上述三種方法,在默認情況下會以逗號分隔,但如果使用join()方法,可以使用不同分隔符返回數組項,但一次只能接受一個參數。

alert(color.join("||"));//blue||red||green

2、棧方法
棧是一種LIFO(Last-In-First-Out,後進先出)的數據結構,棧的插入(叫做推入)和移除(叫做彈出)都發生在棧頂,用push()和pop()實現。
push()方法可以接受任意數量的參數,把他們諸葛添加到數組末尾,並返回修改後數組的長度。pop()方法則從數組末尾移除最後一項,減少數組的length值,然後返回刪除的項。

var color = ["blue","red","green"];
var count = color.push("yellow");
alert(count);//4
var item = color.pop();
alert(item);//yellow
alert(color.length);//3

3、隊列方法
隊列數據結構訪問規則是FIFO(First-In-First-Out,先進先出).
shift()方法能夠移除數組中第一個項並返回該項,同時將數組長度減一。
unshift()方法與shift()方法相反,可以在數組的前端添加新項並返回新數組的長度。

var color = ["blue","red","green"];
var count = color.push("yellow");//push()方法
alert(count);//4
var item = color.shift();//shift()方法
alert(item);//blue
alert(color.length);//3
var count1 = color.unshif("black");//unshift()方法
alert(count1);//4
var item1 = color.pop();//pop()方法
alert(item1);//green
alert(color.length);//3

4、重排序方法
reverse()方法:反轉數組的順序。
sort()方法:默認情況下,按升序排列數組項,會先調用每個數組項的toString方法,然後比較得到的數組項,確定如何排序,即使每個數組項都是數值,此方法比較的也是字符串。

var value = [[1,5,3,17,4]];
val.sort();//[1, 17, 3, 4, 5]

比較函數用於接收兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果相等則返回0,如果第一個參數應該位於第二個之後則返回一個正數,sort方法括號內傳參數只能傳函數,用來決定數組升序或降序,也可以不傳,不可以傳其他參數。

function compare(value1,value2){
    if(value1<value2){
        return -1;}
    else if(value1>value2){
        return 1;}
    else{
        return 0;}
}
var va = [0,1,5,10,15];
va.sort(compare);//[0, 1, 5, 10, 15]

5、操作方法
concat()方法:合併數組(創建了一個新數組,原數組不變) 此方法首先基於當前數組創建一個副本,然後將接收到的參數添加到這個副本的末尾,返回新構建的數組。如果沒有給concat()傳遞參數的情況下,它只是複製當前數組並返回副本。

var colors = ["red","blue","green"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert( colors2 );  //red,blue,green,yellow,black

slice()方法:取得數組的部分元素
基於當前數組中的一或多個項創建一個新數組(不影響原始數組)。
接收一個參數:返回從該參數指定位置開始(下標值)到末尾的所有項
接收兩個參數:返回起始位置(不是下標值)到結束位置之間的元素,不包括結束位置
如果slice方法的參數中有一個負數,則用該數組的長度加上這個數來確定相應的位置

var color = ['red','green','blue','yellow','purple'];
var color1=color.slice(1);//'green','blue','yellow','purple' 
var color2=color.slice(1,4);  //'green','blue','yellow' 

splice()方法:
刪除:要指定兩個參數,要刪除的第一項的位置和刪除的項數。例如:splice(0,2)會刪除數組中的前兩項。
插入:要指定三個參數,起始位置,0(要刪除的項數),要插入的項,若要插入多個項,可以繼續傳入參數。例如:splice(2,0,”red”,”green”)會從當前數組的位置2開始插入字符串“red”,“green”。
替換:要指定三個參數,起始位置,要替換的項數,要插入的替換項。插入的項數不必和與刪除的項數相等。例如:splice(2,1,”red”,”green”)會刪除當前數組位置2的項,然後再從位置2開始插入字符串“red”,“green”。
6、位置方法
indexOf() 返回查找項的下標值,沒有返回-1。 接收兩個參數,要查找的項 ,表示要查找的起點位置的索引(可選)
lastIndexOf() 和indexOf()一樣,只不過是從末尾向前查找

var number=[1,2,3,4,35,6,7];  
alert(number.indexOf(3)) //2 
alert(number.indexOf(3, 3));//4 

7、迭代方法
every(): 對數組中的每一項運行給定的函數,如果該函數對每一項都返回true,則返回 true;

filter(): 對數組中的每一項運行給定的函數,返回該函數會返回true的項的組成的數組。

forEach(): 對數組中的每一項運行給定的函數,這個方法沒有返回值。

map(): 對數組中的每一項運行給定的函數,返回該函數調用結果的組成的數組。

some(): 對數組中的每一項運行給定的函數, 如果該函數對任一項返回true,則返回true。

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

var everyResult = numbers.every(function(item, index, array){
   return(item > 2); 
})
alert(everyResult);   //false

var someResult = numbers.some(function(item, index, array){
   return(item > 2); 
})
alert(someResult);   //true

var filterResult = numbers.filter(function(item, index, array){
   return(item > 2); 
})
alert(filterResult);   //[3, 4, 5, 4, 3]

var mapResult = numbers.map(function(item, index, array){
   return item * 2 ; 
})
alert(mapResult);   //[2, 4, 6, 8, 10, 8, 6, 4, 2]

var i = 0;
numbers.forEach(function(item, index, array){
    i++; 
})
alert(i);   //9

9、歸併方法
reduce()和reduceRight(),這兩個方法都會迭代數組的所有項然後構建一個最終返回的值,其中,reduce()從數組第一項開始,遍歷到最後,reduceRight()從數組最後一項開始,向前遍歷到第一項。

var value = [1,2,3,4,5];
var sum = value.reduce(
    function (prev,cur,index,array){
        return prev+cur;}
);//15
發佈了41 篇原創文章 · 獲贊 13 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章