JS数组遍历方法:forEach、map、filter、reduce、find、some、every

0 阅读4分钟

JavaScript提供了多种数组遍历方法,以下是常见的几种方法:

forEach:对数组中的每个元素执行指定的回调函数,没有返回值
array.forEach((element, index, array) => { // 执行操作 });  
map:对数组中的每个元素执行指定的回调函数,并返回一个新的数组,新数组由每个元素经过回调函数处理后的结果组成
const newArray = array.map((element, index, array) => { // 返回处理后的结果 });

//示例

javascriptconst numbers = [1, 2, 3, 4, 5];

const doubled = numbers.map(function(num) {
  return num * 2; // 返回每个数的两倍
});

console.log(doubled); // 输出 [2, 4, 6, 8, 10]

filter:根据指定的条件过滤数组中的元素,返回一个新的数组,新数组只包含满足条件的元素
const newArray = array.filter((element, index, array) => { // 返回条件判断结果 });
//示例
javascriptconst numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const evens = numbers.filter(function(num) {
  return num % 2 === 0; // 只包含偶数
});

console.log(evens); // 输出 [2, 4, 6, 8, 10]

reduce:通过遍历数组将其元素累积为单个值,接受一个回调函数和一个初始值作为参数,返回累积的结果
const result = array.reduce((accumulator, element, index, array) => { // 返回累积的结果 }, initialValue);

//示例
    let arr = [1, 2, 3, 4, 5];
    let sum = arr.reduce(function (prev, cur, index, arr) {
        console.log(prev, cur, index);
        return prev + cur;
    });
    console.log('arr:', arr, 'sum:', sum); // sum:15
find:返回数组中满足提供的测试函数的第一个元素的值,否则返回undefined
javascriptconst found = array.find(function(currentValue, index, arr) {
  // 返回 true 或 false 来决定是否找到了满足条件的元素
});

//示例
javascriptconst numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const firstEven = numbers.find(function(num) {
  return num % 2 === 0; // 返回第一个偶数
});

console.log(firstEven); // 输出 2

some:检查数组中是否至少有一个元素满足指定条件,返回一个布尔值
const hasSome = array.some((element, index, array) => { // 返回条件判断结果 });
every:检查数组中是否所有元素都满足指定的条件,返回一个布尔值
const allMatch = array.every((element, index, array) => { // 返回条件判断结果 });
区别

1、返回值

  • forEach方法没有返回值,它仅用于遍历数组并对每个元素执行操作。
  • map方法返回一个新的数组,该数组由原始数组中的每个元素经过回调函数处理后的结果组成。
  • filter方法返回一个新的数组,该数组由原始数组中满足指定条件的元素组成。
  • reduce方法返回一个累积的结果,该结果可以是任意类型的值。
  • some方法返回一个布尔值,表示数组中是否至少有一个元素满足指定条件。
  • every方法返回一个布尔值,表示数组中的所有元素是否都满足指定条件。

2、修改原数组

  • forEach、map、filter、some和every方法不会修改原始数组,它们只是对数组进行遍历或条件判断
  • reduce方法可以通过累积的过程修改原始数组的值,但需要在回调函数中显式地进行操作

3、使用回调函数

  • forEach、map、filter、reduce、some和every方法都接受一个回调函数作为参数
  • 回调函数的参数可以包括当前元素、当前索引和数组本身,但在每种方法中使用的参数可能会有所不同

4、返回新数组

  • map、filter和reduce方法都会返回一个新的数组,而不会修改原始数组
  • forEach、some和every方法不返回新的数组,它们只提供了遍历或条件判断的功能

5、应用场景

  • forEach适用于需要对数组进行遍历并执行操作,但不需要返回新数组或累积结果的情况。
  • map适用于需要对数组中的每个元素进行转换或映射,并返回一个新的数组的情况。
  • filter适用于根据指定条件筛选出符合条件的元素,并返回一个新的数组的情况。
  • reduce适用于通过遍历数组将其元素累积为单个值的情况。
  • some适用于判断数组中是否至少有一个元素满足指定条件的情况。
  • every适用于判断数组中的所有元素是否都满足指定条件的情况。