ES5新增的Array的方法详解

前言

全部概括

ES5新增了很多新的方法,简单编码,简单生活。由于ES5不兼容IE8及以下的浏览器,所以要求兼容请查看 兼容地址

目录

  1. forEach
  2. map
  3. filter
  4. some
  5. every
  6. indexOf
  7. lastIndexOf
  8. reduce
  9. reduceRight
  10. 兼容文件

ONE BY ONE

forEach 遍历

等同于传统的遍历,循环。forEach(val, index, array){}val 表示循环的值, index 表示当前循环的位置, array 表示输出整个数组

用法: array.forEach(callback,[ thisObject])

var arr = [1, 2, 3, 4, 5];

arr.forEach(function(value, index, array)){
    console.log(value, index, array);

    // 1 , 0, [1, 2, 3, 4]
    // 2 , 1, [1, 2, 3, 4]
    // 3 , 2, [1, 2, 3, 4]
    // 4 , 3, [1, 2, 3, 4]
}

// 使用ES6编写

arr.forEach((value, index, array) => {});

map 映射

这里的map不是地图的意思,而是指映射。不难理解,映射就是讲原数组映射成新的数组。用法跟forEach类似。

用法: array.map(callback,[ thisObject]);

var arr = [1, 2, 3,]

var newArr = arr.map((value, index, array) => {
    return value + 1;
})

console.log(newArr)

// [2, 3, 4]

filter 过滤,筛选

filter,过滤筛选之意。数组filter后,返回一个新的数组。用法类型map

用法: array.filter(callback,[ thisObject]);

filter的callback函数需要返回布尔值true或者falsetrue则通过,false则不返回


var arr = [1, 2, 3, 4]

var newArr = arr.filter((value, index, array) => {
    return value > 2
})

console.log(newArr)
// [3,4]

some

某些,指是否某些项符合条件。与every是好基友,every表示每一项都合乎条件。

用法: array.some(callback,[ thisObject]);


var arr = [1, 2, 3, 4];

var pp = arr.some((value) => {
    return value > 2
})

console.log(pp)
// true

every

some是好基友,需要每一项都符合条件

用法: array.every(callback,[ thisObject]);


var arr = [1, 2, 3, 4]

var pp = arr.every((value) => {
    return value > 0
})

// true; 每一项都大于0

indexOf

indexOf在数组中的方法与在字符串的使用方法类似。返回整数的索引值,如果没有匹配,则返回-1

用法:array.indexOf(searchElement[, fromIndex])


var arr = [1, 2, 3, 4]

console.log(arr.indexOf(1)) // 0

lastIndexOf

如上

reduce

reduce是JavaScript 1.8中才引入的,中文意思为“减少”、“约简”。不过,从功能来看,我个人是无法与“减少”这种含义联系起来的,反而更接近于“迭代”、“递归(recursion)”,擦,因为单词这么接近,不会是ECMA-262 5th制定者笔误写错了吧~~

用法: array.reduce(callback[, initialValue])

callback函数接受4个参数:之前值、当前值、索引值以及数组本身


var sum = [1, 2, 3, 4].reduce(function (previous, current, index, array) {
  return previous + current;
});

console.log(sum); // 10

reduceRight

与上

compatible

兼容代码