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,向前遍历到第一项