Array類型
"可以保存任何類型的數據,并且大小可以調整的.“
一、創建實例
1、使用Array構造函數
var color = new Array();
2、使用數組字面量表示法
var color = ["red","blue","yellow"];
- 其中需要注意的是:強烈建議不要使用 var option = [,,,,];
3、元素的讀取和設置使用【】+下標
4、數組長度使用.length
二、檢測數組
對于一個網頁或者一個全局作用域而言,使用instanceof操作符就能得到滿足的結果,但是對于網頁包含多個框架,從而會存在兩個以上不同版本的Array構造函數。所以引進了Array.isArray()方法,具體用法如下:
if(Array.isArray(value)) { }
三、轉換方法
如前所述,所有對象都具有toLocaleString()、toString()和valueOf()方法。
1、toString()方法:返回由數組中每個值得字符串形式拼接而成的一個以逗號分隔的字符串;
2、toLocaleString()方法:經常也會返回與toString()和valueOf()方法相同的值,但唯一不同之處在于:為了取得每一項的值,調用的是每一項的toLocaleString()方法,而不是toString()方法,請看下面的例子
var person1 = {
toLocaleString : function () {
return "Nikolaos";
},
toString : function() {
return "Nicholas";
}
};
var person2 = {
toLocaleString : function () {
return "Grigorios";
},
toString : function() {
return "Greg";
}
};
var people = [person1,person2];
alert(people); //Nicholas,Greg
alert(people.toString()); //Nicholas,Greg
alert(people.toLocaleString()); //Nikolaos,Grigorios
4、前三種方法,在默認情況下都會返回以逗號分隔的字符串。而如果使用join()方法,則可以使用不同的分隔符來構建這個字符串。join()方法只接受一個參數,即用作分隔符的字符串,然后返回包含所有數組項的字符串。
四、棧和隊列方法
1、棧方法
function Stack(){
var items=[];//用數組來保存棧中的數據;
this.push=function(element){
items.push(element);
};
this.pop=function(){
return items.pop();
};
this.peek=function(){
return items[items.length-1];
};
this.isEmpty=function(){
return items.length == 0;
};
this.size=function(){
return items.length;
}
this.clear=function(){
items=[];
}
this.toString=function(){
return items.toString();
};
}
主要是兩個方法:push():添加到數組的末尾;pop():從末尾移除最后一項;
2、隊列方法
function Queue(){
var items=[];//用數組來保存棧中的數據;
this.enqueue=function(element){
items.push(element);
};
this.dequeue=function(){
return items.shift();
};
this.font=function(){
return items[0];
};
this.isEmpty=function(){
return items.length == 0;
};
this.size=function(){
return items.length;
}
this.clear=function(){
items=[];
}
this.toString=function(){
return items.toString();
};
}
主要兩個方法:push()方法和shift()方法:從數組的前端取得項;
五、重排序方法
1、reverse()方法:返回數組項的逆序;
2、sort()方法:
sort(function compare(value1,value2){
return value1 - value2; //升序
return value2 - value1; //降序
});
六、操作方法
1、concat()方法可以基于當前數組中的所有項創建一個新數組,將接收到的參數添加到這個副本的末尾;
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);
alert(colors2); // red,green,blue,yellow,black,brown;
2、slice()方法可以基于一個或多個項創建一個新數組??梢越邮諆蓚€參數,一個起始位置,一個結束為止,當只有一個參數時,從起始位置到數組末尾項;
var colors = ["red","green","blue","yellow"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,2);
alert(colors2); //green,blue,yellow;
alert(colors3); // green,blue;
3、splice()方法:刪除、插入、替換,返回一個包含從原始數組中刪除的項的數組。
刪除:splice(起始位置,刪除項數);
插入:splice(起始位置,0,...,...);
替換:splice(起始位置,1,...,...);
七、位置方法
1、indexOf(起始位置,尋找的元素):從數組開頭開始向后找;
2、lastIndexOf(起始位置,尋找的元素):從數組末尾開始向前找;
這兩個方法都返回要查找的項在數組中的位置,或者在沒有找到的情況下返回-1;
八、迭代方法
ECMAScript5為數組定義了5個迭代方法。每個方法都接受兩個參數:要在每一項上運行的函數和(可選的)運行該函數的作用域對象--影響this的值。傳入這些方法中的函數會接受三個參數:數組項的值、該項在數組中的位置和數組對象本身。
1、every(function(item,index,array){}) 每一項都返回true,結果才為true
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
return (item>2);
});
alert(everyResult); //false;
2、some(function(item,index,array){}) 對任一項返回true,結果就為true;
var someResult = numbers.some(function(item,index,array){
return (item>2);
});
alert(someResult); //true;
3、filter(function(item,index,array){}) 返回該函數會返回true的項組成的數組
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
return (item>2);
});
alert(filterResult); //[3,4,5,4,3];
4、forEach(function(item,index,array){}) 對數組每一項執行函數,沒有返回值
5、map(function(item.index,array){}) 返回每次函數調用結果的數組
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){
return item*2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2];
九、歸并方法
ECMAScript5還信增了兩個歸并數組的方法:reduce()和reduceRight()。這兩個方法都會迭代數組的所有項,然后構建一個最終返回的值。這連個方法都接收兩個參數:一個在每一項上調用的函數和(可選)作為歸并基礎的初始值。傳入的函數接收4個參數:前一個值、當前值、項的索引和數組對象本身。
1、reduce(function(prev,cur,index,array){}),從數組的第一項開始,逐個遍歷到最后。使用reduce()方法可以執行求數組中所有值之和的操作。比如:
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur;
});
alert(sum); //15;
2、reduceRight(function(prev,cur,index,array){}) 從數組的最后一項開始hi,向前遍歷到第一項