ES5新增的Array的方法详解
前言
ES5新增了很多新的方法,简单编码,简单生活。由于ES5不兼容IE8及以下的浏览器,所以要求兼容请查看 兼容地址
目录
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或者false。true则通过,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
与上