ES5对数组做了大幅的扩展,下面来介绍下ES5数组的常用操作
ES5数组
Array.isArray()
用来判断一个对象是不是数组,如果是,返回true
,否则返回false
.indexOf(element)
用于从前往后查找数组中是否含有某个元素,如果有,返回对应的下标,如果没有,返回-1
即实现如下功能:
function hasword(arr, element) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === element) return i
} return -1
}
.lastIndexOf(element)
用于从后往前查找数组中是否含有某个元素,用法参照.indexOf(element)
.forEach(element, index, array)
遍历数组,参数为一个回调函数,其中返回三个参数:当前元素,元素下标和数组.every(function(element, index, array))
当every
中的每个回调函数都返回true
的时候才会返回true
,当遇到false
的时候终止执行,返回false
例如:判断一个数组中是否全是正数
arr.every(function(element){
return element>0?true:false
})
-
.some(function(element, index, array))
当some
中的有一个回调函数返回true
时就会返回true
,否则返回false
例如:判断一个数组中是否含有正数
arr.every(function (element) {
return element > 0 ? true : false
})
-
.map(function(element))
遍历数组,参数为回调函数,组成一个新数组返回,原数组不变
例如:生成一个新数组,使得新数组中每一项是原来的平方
var newarr = arr.map(function (element) {
return element * element
})
-
.filter(function(element))
用于筛选原数组,参数是一个回调函数,如果回调函数返回为true
,则将所有true
的元素组成一个新数组,将返回为false
的元素剔除,原数组保持不变
例如:筛选数组中的所有正数
var newarr = arr.filter(function(element){
return element > 0
})
-
.reduce(function(v1, v2), value)
遍历数组,参数是一个回调函数,将v1
和v2
依次合成一个元素,下标从前往后依次开始,最终返回成一个结果,其中value
是初始值。
例如:计算数组内所有元素的和
arr.reduce(function (v1, v2) {
return v1 + v2
})
PS:也可以手写一个函数实现 reduce
的效果
function reduce(arr, fn, initValue) {
var newarr = (initValue = undefined ? [] : [initValue]).concat(arr)
while (newarr.length > 1) {
console.log(newarr)
newarr.splice(0, 2, fn(newarr[0], newarr[1]))
}
return newarr[0]
}
-
.reduceRight(function(v1, v2), value)
方法参照.reduce(function(v1, v2), value)
,只不过是元素是按照下标从后往前的