栈方法
push()
接收任意数量的参数逐个添加到数组末尾(从末尾加) pop()
从数组末尾移除最后一项(删最后一个)
队列方法
shift()
移除数组中的第一个项(删第一个) unshift()
在数组前端添加任意个项(从前面加)
重排列方法
reverse()
翻转数组项的顺序 sort()
升序排列(首字母排序,不是按大小)
比较函数
升序
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); //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()
末尾添加数组
contan( [ "black" , "yellow" , "red" ] )
splice()
数组中部插入项
删除
splice(要删除的第一项的位置, 要删除的项数)
splice( 0, 2 )
删除数组中前两项
插入
splice( 起始位置, 0(要删除的项数), 要插入的项)
splice( 2, 0, "red", "green" )
从当前数组的位置2 开始插入字符串“red” 和“green”
替换
splice( 起始位置, 要删除的项数, 要插入的任意数量的项)
splice( 2, 1, "red", "green" )
会删除当前数组位置 2 的项, 然后再从位置 2 开始插入字符串 “red” 和“green”
例子
var colors = ["red", "green", "blue"]; var removed = colors.splice(0,1); //remove the first item alert(colors); //green,blue alert(removed); //red - one item array removed = colors.splice(1, 0, "yellow", "orange"); //insert two items at position 1 alert(colors); //green,yellow,orange,blue alert(removed); //empty array removed = colors.splice(1, 1, "red", "purple"); //insert two values, remove one alert(colors); //green,red,purple,orange,blue alert(removed); //yellow - one item array
位置方法
indexOf()
从数组的开头(位置0)开始向后查找, 没找到的情况下会返回-1 lastIndexOf
从数组的末尾开始向前查找, 没找到的情况下会返回-1
例子
var numbers = [1,2,3,4,5,4,3,2,1]; alert(numbers.indexOf(4)); //3 alert(numbers.lastIndexOf(4)); //5 alert(numbers.indexOf(4, 4)); //5 alert(numbers.lastIndexOf(4, 4)); //3 var person = { name: "Nicholas" }; var people = [{ name: "Nicholas" }]; var morePeople = [person]; alert(people.indexOf(person)); //-1 alert(morePeople.indexOf(person)); //0
迭代方法
every()
对数组中的每一项运行给定函数, 如果该函数对每一项都返回true, 则返回true。 filter()
对数组中的每一项运行给定函数, 返回该函数会返回 true 的项组成的数组。 forEach()
对数组中的每一项运行给定的函数。 这个方法没有返回值。 map()
对数组中的每一项运行给定的函数, 返回每次函数调用的结果组成的数组。 some()
对数组中的每一项运行给定的函数, 如果该函数对任一项返回true, 则返回true。
以上方法都不会修改数组中的包含的值, 传入这些方法会接受三个参数(数组项的值, 该项在数组中的位置, 数组对象本身)
every() some() 例子
以上代码调用的every() 和 some() , 传入的函数只要给定项大于 2 就会返回true, 对于every(),它返回的是false, 因为只有部分数组项符合条件,对于some() 就返回true, 因为至少有一项是大于 2 的。
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
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true
filter() 例子
通过filter()方法创建并返回一个所有数值都大于 2 的数组
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]
map() 例子
给数组中每一项都乘以 2
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]
forEach() 例子
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//执行某些操作
})
归并方法
reduce()
从数组第一项开始逐个遍历到最后 reduceRight()
从数组最后一项开始,向前遍历到第一项
四个参数(前一个值, 当前值, 项的索引, 数组对象)
reduce() 例子
求数组所有值之和
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum);
reduceRight() 例子
求数组所有值之和
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
alert(sum);