ES5新增数组方法:
Array.isArray()
Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。
eg:var arr = [1, 2, 3];
typeof arr // "object"
Array.isArray(arr) // true
上面代码中,typeof运算符只能显示数组的类型是Object,而Array.isArray方法可以识别数组。
forEach()---注:该方法仅支持iE8以上浏览器
-forEach()方法需要一个函数作为参数
-不返回值,只操作数据
-像这种函数,由我们创建但是不由我们调用的,我们称为回调函数
-数组中有几个元素函数就执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容
-浏览器会在回调函数中传递三个参数:
第一个参数,就是当前正在遍历的元素(value)
第二个参数,就是当前正在遍历的元素的索引/下标(index)
第三个参数,就是正在遍历的数组(obj)
map()
-map方法和forEach方法很相似,但是map方法有返回值,遍历当前数组,并且将当前数组中的元素返回给新数组,不适用
return时,新数组长度与原数组相同,但每个元素都是undefined
eg:[1, 2, 3].map(function(elem, index, arr) {
return elem * index;
});
// [0, 2, 6]
filter()
-filter方法用于过滤组成员,满足条件的成员组成一个新数组返回
-它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回,该方法不会改变原数组
-filter方法的参数函数可以接受三个参数:当前成员,当前位置和整个数组。(同forEach、map)
eg:
var res = [1, 2, 3, 4, 5].filter(function (elem, index, arr) {
return index % 2 === 0;
});
res// [1, 3, 5]
find()
-find 参数是一个函数,函数的返回值是查找条件,返回值是找到的对象,找不到返回undefined
-与filter不同的是:filter返回的是数组,find返回的是对象
-返回找到的第一个符合条件的对象并返回
reduce()
-reduce方法从左到右(从第一个成员到最后一个成员)依次处理数组的每个成员,最终累计为一个值。
-reduce方法参数是一个函数,该函数接受一下两个参数。
第一个参数:积累变量,默认为数组的第一个成员
第二个参数:当前变量,默认为数组的第二个成员
eg:
var res = [1, 2, 3, 4, 5].reduce(function (a, b) {
console.log(a, b);
return a + b;
})
// 1 2 第一次执行,a是数组的第一个成员1,b是数组的第二个成员2。
// 3 3 第二次执行,a为上一轮的返回值3,b为第三个成员3。
// 6 4 第三次执行,a为上一轮的返回值6,b为第四个成员4。
// 10 5 第四次执行,a为上一轮返回值10,b为第五个成员5。
至此所有成员遍历完成,整个方法的返回值就是最后一轮的返回值15。
res//最后结果:15
indexOf()
-indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。
eg:
var a = ['a', 'b', 'c'];
a.indexOf('b') // 1
a.indexOf('y') // -1
-indexOf方法还可以接受第二个参数,表示搜索的开始位置。
eg:
['a', 'b', 'c'].indexOf('a', 1) // -1
注:上面代码从1号位置开始搜索字符a,结果为-1,表示没有搜索到。
lastIndexOf()
-lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。
eg:
var a = [2, 5, 9, 2];
a.lastIndexOf(2) // 3
a.lastIndexOf(7) // -1
注:这两个方法不能用来搜索NaN的位置,即它们无法确定数组成员是否包含NaN。
[NaN].indexOf(NaN) // -1
[NaN].lastIndexOf(NaN) // -1
这是因为这两个方法内部,使用严格相等运算符(===)进行比较,而NaN是唯一一个不等于自身的值
some()
- 判断数组中所有元素是否有满足条件的,如果遇到一次满足则不再继续判断,直接返回true,否则返回false
注:可以查找对象型数组中是否有符合条件的
every()
- 判断数组中的每一个元素是否满足条件,如果全部满足,就返回true,否则返回false
ES6的方法
Array.from()
-将类数组转换为数组
注:低版本浏览器用 Array.prototype.slice.call()