5.2 Array類型

◆  建立數組的基本方式有兩種。
前端

①第一種是使用Array構造函數,new關鍵字可省略 數組

var colors = new Array();

var colors = new Array(20);  //length值爲20

var colors = new Array("red","blue","black");

②第二種是使用字面量表示法數據結構

var colors = ["red","blue","black"];
var emptyArr = [];  //空數組


◆  讀取和設置數組的值 函數

var colors = ["red","blue","green"];
alert(color[0]);        //顯示第一項
color[2] = "green"      //修改第三項
color[3] = "pink"       //增長第四項


◆  length屬性,能夠經過設置該屬性移除或添加數組中的項目 spa

利用length屬性能夠在數組末尾添加項: colors [ colors.length ] = "white"
對象

最後一項的索引是length-1 排序


◆檢測數組 索引

instanceof() 隊列

Array.isArray()方法  ip


◆棧方法 (LIFO)

Last-In-First-Out 後進先出的數據結構,最新添加的項最先被移除。push()和pop()方法。

push()方法能夠接受任意數量的參數 ,把他們逐個添加到數組末尾,並返回修改後數組的長度。而pop()方法則移除數組最末尾的一項,返回移除的項。

		var color= new Array();
		var count=color.push("red","green");
		alert(count);   //2

		count = color.push("black");
		alert(count);   //3
		document.write(color);   //red,green,black

		
		var item = color.pop();
		alert(item);	//black
		document.write(color);   //red,green


◆隊列方法(FIFO)

隊列在列表的末尾添加項,從列表的前端移除項。push()方法和shift()方法

push()向數組末端添加項,shift移除數組中的第一個項並返回該項。

unshift()方法跟shift()方法相反,它在數組前端添加任意個項返回該新數組的長度。


◆重排序方法 :reverse() 和 sort()

reverse()方法會反轉數組項的順序。

var values = [1,2,3,4,5];
values.reverse();
alert(values);  //5,4,3,2,1

sort()方法按會調用每一個數組項的toString()轉型方法,而後比較獲得的字符串,再從小往大排。

var values = [0,1,5,10,15];
values.sort();
alert(values);  //0,1,10,15,5

不少sort()方法接收一個比較函數做爲參數,如:

function compare(value1,value2){
	if(value1<value2){
		return -1;
	}else if(value1>value2){
		return 1;
	}else{
		return 0;
	}
}

把上面的比較函數做爲參數傳遞到sort()方法:

var values = [0,1,5,10,15];
values.sort(compare);
alert(values);  //0,1,5,10,15


交換比較函數返回的值能夠產生降序排序的結果。

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





concat()方法

這個方法會建立當前數組一個副本,而後將接收到的參數添加到這個副本的末尾,最後返回新數組。沒有傳遞參數的狀況系 ,它只是複製當前數組並返回副本。

    var color = ["red","green","blue"];
    var color2 = color.concat("yellow",["black","gray"]);
    alert(color2); //red,green,blue,yellow,black,gray

 

slice()方法

這個方法能夠接受一或兩個參數,即要返回項的起始和結束位置。在只有一個參數的狀況下,slice()方法返回從該參數指定位置開始到當前數組末尾的全部項。若是有兩個參數,返回起始和結束位置之間的項(不包括結束位置的項),slice()方法不會影響原始數組。

var color = ["red","green","blue"];
var color2 = color.slice(1);
var color3 = color.slice(0,2);
alert(color2);  //green,blue
alert(color3);	//red,green
alert(color);	//red,green,blue

 

splice()方法

有不少種用法,主要用途是向數組的中部插入項。

-刪除:指定2個參數,要刪除的第一項的位置,要刪除的項數。

var color = ["red","green","blue"];
var color2 = color.splice(0,1);
alert(color2);  //red  
alert(color);	//green,blue

 

-插入:指定3個參數,起始位置,0(要刪除的項數),要插入的項。

var color = ["red","green","blue"];
var color2 = color.splice(1,0,"yellow","pink","black"); //在位置1前插入
alert(color2);  //沒有刪除項,因此返回一個空數組  
alert(color);	//red,yellow,pink,black,green,blue

 

-替換:指定3個參數,起始位置,要刪除的項,要插入的項。

var color = ["red","green","blue"];
var color2 = color.splice(1,2,"yellow","pink","black");
alert(color2);  //green,blue 
alert(color);	//red,yellow,pink,black

 


indexOf()方法 和 lastIndexOf()方法

這兩個方法從接收兩個參數:要查找的項,表示查找起點位置的索引(可選)。indexOf()方法從數組的開頭向後查找,lastIndexOf()方法則從數組的末尾向前查找。

這兩個方法都返回要查找的項在數組中的位置,沒找到的狀況下返回-1.

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

alert(color.indexOf("green"));  //1
alert(color.indexOf("green",2))	//-1 找不到,返回-1

alert(color.lastIndexOf("red")); //0
alert(color.lastIndexOf("green",0)) //-1

 



迭代方法:ECMAScript5爲數組定義了5個迭代方法。每一個方法都接收兩個參數:要在每一項上運行的函數,運行該函數的做用域對象(可選)

    而傳入這些方法中的函數會接收三個參數:數組項的值,該項下數組中的位置,數組對象自己

    every():檢測數組中的每一項是否符合條件,每一項都返回true,則返回true 

var num = [1,2,3,4,5];
var result = num.every(function(item,index,array){
	return(item > 0);
});
alert(result); //true

 

   

     some():檢測數組中的某一項是否符合條件,只要某一項返回true,則返回true

var num = [1,2,3,4,5];
var result = num.some(function(item,index,array){
	return(item > 4);
});
alert(result); //true

 


    filter():篩選出數組中符合條件的項,即返回true的項,返回這些項組成的新數組

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

 

    

    map():對數組的每一項運行傳入的函數,對應項得出的結果產生一個新數組

var num = [1,2,3,4,5];
var result = num.map(function(item,index,array){
	return (item * 2);
});
alert(result); //2,4,6,8,10

 

    

    forEach():對數組中的每一項運行傳入的函數。沒有返回值,本質上與使用for循環迭代數組同樣

var num = [1,2,3,4,5];
var result = num.forEach(function(item,index,array){
	return (item);
});
alert(result); //undefined

 



兩個縮小數組的方法:reduce() 和 reduceRight()方法

這兩個方法都會迭代數組的全部項,而後構建一個最終返回的值。reduce()方法從數組的第一項開始,逐個遍歷到最後,reduceRight()方法則從數組最後一項開始往前遍歷到第一項。

這兩個方法都接收兩個參數:一個在每一項調用的函數,做爲縮小基礎的初始值(可選)

調用的函數接收4個參數:前一個值,當前值,項的索引,數組對象

var num = [1,2,3,4,5];
var result = num.reduce(function(prev,cur,index,array){
	return (prev*cur);
});
alert(result); //120 =1*2*3*4*5

 

reduceRight()的做用相似,不過方向相反而已。

相關文章
相關標籤/搜索