◆ 建立數組的基本方式有兩種。
前端
①第一種是使用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()的做用相似,不過方向相反而已。