序号 | 对象调用的方法 | 方法 | 返回值 |
---|---|---|---|
1 | array.forEach(function(value, index, array){}) | 遍历 | 无 |
2 | array.map(function(value, index, array){}) | 遍历&返回 | 新数组 |
3 | array.filter(function(value, index, array){ return 条件 }) | 过滤&返回 | 新数组 |
4 | array.every(function(value, index, array){ return 条件}) | 遍历&判断 | 布尔值 |
5 | array.some(function(value, index, array){ return 条件 }) | 遍历&判断 | 布尔值 |
6 | array.reduce(function(sum, value, index, array) {}, 0) | 遍历&累计 | 累计结果 |
7 | Array.from(伪数组) | 转换 | 新数组 |
数组方法的使用
var arr = [1, 5, 7, 3, 10, 2, 4]
- forEach() - 单纯遍历 - 无返回值
arr.forEach(function(value, index){
console.log(index + “–” + value);
})- map() - 遍历 - 收集每次return结果 - 返回全新数组
var result2Arr = arr.map(function(value, index){
return value + 1;
})
console.log(result2Arr);- filter() - 过滤 - 收集每次return结果 - 返回全新数组
var result3Arr = arr.filter(function(value, index){
return value >= 5;
})
console.log(result3Arr);- every() - 找到不符合条件的 - 直接返回false - 不继续执行
var arr5 = [20, 21, 1,18, 19, 23];
var result5 = arr5.every(function(value, index){
return value > 18;
})
console.log(result5);- some() - 找到符合条件的 - 直接返回true - 不继续执行
var result6 = arr5.some(function(value, index){
return value < 18;
})
console.log(result6);- reduce() - 累计运算 - 返回累计结果
传值:arr.reduce(callback, initialValue)
callback (执行数组中每个值的函数,包含四个参数)
- previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
- currentValue (数组中当前被处理的元素)
- index (当前元素在数组中的索引)
- array (调用 reduce 的数组)
- initialValue (作为第一次调用 callback 的第一个参数。)
例子:
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
},0) //注意这里设置了初始值
console.log(arr, sum);
Ps:如果没有提供initialValue初始值,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。
- Array.from(伪数组) - 伪数组转为真数组 - arr.from()是方法的整体,不可改
var obj = {length:5}
var arr = Array.from(obj, (item, index) => {
console.log(item)
})
console.log(arr)