ES5数组扩展

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)
    遍历数组,参数是一个回调函数,将 v1v2依次合成一个元素,下标从前往后依次开始,最终返回成一个结果,其中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),只不过是元素是按照下标从后往前的

你可能感兴趣的:(ES5数组扩展)