javascript中数组的常用遍历方法
- 遍历方法: forEach()、map()、filter()、some()、 every()、reduce()
1.forEach()
-
for 循环的加强版
-
forEach()不会改变原始数组。
-
forEach()方法遍历数组的每一项
-
注意:除了抛出异常以外,没有办法中止或跳出forEach()循环。如果你需要中止或跳出循环,forEach()方法不是应当使用的工具。
// 完整写法
// array.forEach(function(Value, index, arr))
// Value:数组当前项的值
// lindex:数组当前项的索引
// larr:数组对象本身
var array = ['1', '2', '3'];
array.forEach(function(Value, index, arr) {
console.log(Value);
// 1
// 2
// 3
});
2.map()
- map()不会改变原始数组。
- map()方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
// 完整写法
// array.map(function(Value, index, arr))
// Value:数组当前项的值
// lindex:数组当前项的索引
// larr:数组对象本身
const array1 = [2, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1);
// map1 = [4, 8, 18, 32]
3.filter()
- filter()不会改变原始数组。
- filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素, 用途:用于筛选(过滤)数组,实用+
// 完整写法
// array.map(function(Value, index, arr))
// Value:数组当前项的值
// lindex:数组当前项的索引
// larr:数组对象本身
const array = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const newArray = array.filter(value => value.length > 6);
console.log(newArray);
// newArray = ["exuberant", "destruction", "present"]
4.some()
- some()遍历查找满足条件的元素是否存在,如果存在返回true, 不存在返回false,并且一旦找到满足条件的元素就终止遍历
// 完整写法
// array.map(function(Value, index, arr))
// Value:数组当前项的值
// lindex:数组当前项的索引
// larr:数组对象本身
const array = ['1', '4', '8'];
var a = array.some(function(value) {
console.log(value)
// 打印
// 1
// 4
// 8不会被打印 因为遍历到4 已经满足条件
return value > 2
});
// 箭头函数简写
//const a = array.some(value => value > 2)
console.log(a) // true
5.every()
- every()方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
// 完整写法
// array.map(function(Value, index, arr))
// Value:数组当前项的值
// lindex:数组当前项的索引
// larr:数组对象本身
const array = ['1', '4', '8'];
var b = array.every(function(value) {
console.log(value)
// 打印
// 1
// 4,8 不会被打印 因为遍历到4 已经不满足条件
return value > 2
});
console.log(b) // false
6.reduce()
- reduce()方法遍历数组,常用于统计数量
- 语法:array.reduce(function(total, value, index, arr), initialValue)
- total: 必需。初始值, 或者计算结束后的返回值。
- currentValue: 必需。当前元素
- index: 可选。当前元素的索引
- arr: 可选。当前元素所属的数组对象。
- initialValue: 可选。传递给函数的初始值(tatal)
- 注意: reduce() 对于空数组是不会执行回调函数的。
// array.reduce(function(total, value, index, arr), initialValue)
// total: 必需。初始值, 或者计算结束后的返回值。
// currentValue: 必需。当前元素
// index: 可选。当前元素的索引
// arr: 可选。当前元素所属的数组对象。
const array = [10, 20, 30];
const b = array.reduce(function(tatal, value) {
return tatal += value
},0)// 给tatal设置初始值为0
console.log(b) // 60