(一)操作方法
push
: 从数组末尾添加项,返回数组长度
unshift
: 从数组头添加项,返回数组长度
pop
: 从数组末尾删除项,返回被移除的项
shift
: 从数组头删除项,返回被移除的项
concat
: 组合两个数组,原来的数组不会被改变
slice
: 接受一个或两个参数,从数组中截取部分项,返回新的数组,原来的数组不会被改变
注意: 如果结束位置小于初始位置则返回空的数组;如果参数为负值,则位置是 参数+数组长度
splice
=> 有三种基本用法:
- 删除项: 第一个参数表示开始删除项的位置,第二个参数表示要删除多少项
- 插入项: 第一个参数表示开始删除项的位置,第二个参数表示要是出多少项(这里是0,表示不删除),第三个参数表示要插入的项,如果要插入多个项,可以添加第四个,第五个参数
- 替换项: 第一个参数表示开始删除项的位置,第二个参数表示要删除多少项,第三个参数表示要替换的项,如果替换的项有多个,同上。
(二)排序
sort
=> 先把数组的每个值用 toString()
方法转成字符串,然后再比较
所以要想得到正确的顺序,需要给sort传递一个比较函数,推荐一个比较常用的比较函数:
function compare(v1,v2){
return v2 - v1
}
用法:sort(compare)
(三)位置
indexOf
=> 查找某个项在数组中的位置,从头查询。
lastIndexOf
=> 查找某个项在数组中的位置,从末尾查询。
以上两个方法都接受两个参数,第一个参数表示要查询的项,第二个参数表示开始查询位置(可选)
(四)迭代方法
五个迭代方法接受两个参数,一个是要数组对象,一个是运行在数组每一项上的函数
-
every()
=> 如果函数每一项都返回true,则返回值为true
var numbers = [1,2,3,4]
var result = numbers.every(function(item, index, array){
return (item > 2)
})
console.log(result) // false
2.some()
=> 如果函数中任一项返回true,则返回值为true
var numbers = [1,2,3,4]
var result = numbers.some(function(item, index, array){
return (item > 2)
})
console.log(result) // true
3.filter()
=> 函数中返回值为true的项组成新数组
var numbers = [1,2,3,4]
var result = numbers.filter(function(item, index, array){
return (item > 2)
})
console.log(result) // [3,4]
4.map()
=> 每次调用函数的结果组成新的数组
var numbers = [1,2,3,4]
var result = numbers.map(function(item, index, array){
return item * 2
})
console.log(result) // [2,4,6,8]
5.forEach()
=> 这个方法没有返回值
var numbers = [1,2,3,4]
numbers.map(function(item, index, array){
// 执行某些操作
})
6.reduce()
和reduceRight()
,其实这两个方法不是迭代方法,为了方便我整理到了一起,解释起来比较麻烦,看列子会明白:
// 计算一个数组的求和
var arr = [1,2,3,4]
var sum = arr.reduce(function(prev,cur,index,array){
return prev + cur
})
console.log(sum) // 10