JS中filter/reduce/some/every/includes等常用方法使用指南

54 阅读4分钟

这些方法主要功能包括遍历操作筛选操作转换操作查找操作数组操作其他操作

1. 遍历操作

这些方法主要用于遍历数组中的每个元素。

.forEach()

  • 作用:对数组中的每个元素执行一次提供的函数。
  • 返回值:无返回值(undefined)。

.for...of

  • 作用:使用 for...of 循环遍历数组中的每个元素。
  • 返回值:无返回值。

2. 筛选操作

这些方法用于筛选数组中的元素,返回一个新数组。

.filter()

  • 作用:创建一个新数组,包含所有通过测试的元素。
  • 返回值:新数组。

.find()

  • 作用:返回数组中满足条件的第一个元素。
  • 返回值:找到的第一个满足条件的元素,否则返回 undefined
  • 示例
const arr = [1, 2, 3, 4, 5];
const found = arr.find((item) => item > 3);
console.log(found); // 4

.findIndex()

  • 作用:返回数组中满足条件的第一个元素的索引。
  • 返回值:找到的第一个满足条件的元素的索引,否则返回 -1
  • 示例
const arr = [1, 2, 3, 4, 5];
const index = arr.findIndex((item) => item > 3);
console.log(index); // 3

3. 转换操作

这些方法用于对数组中的元素进行转换或累积操作。

map()

  • 作用:创建一个新数组,其元素是调用一次提供的函数后的返回值。
  • 返回值:新数组。
  • 示例
const arr = [1, 2, 3];
const mapped = arr.map((item) => item * 2);
console.log(mapped); // [2, 4, 6]

.reduce()

  • 作用:对数组中的元素进行累积操作,返回一个单一的值。
  • 返回值:累积后的值。
  • 示例
const arr = [1, 2, 3, 4];
const sum = arr.reduce((acc, item) => acc + item, 0);
console.log(sum); // 10

4. 查找操作

这些方法用于查找数组中的元素或条件。

.some()

  • 作用:测试数组中的元素是否满足在提供的函数中实现的测试条件。只要有一个元素满足条件,就返回 true
  • 返回值:布尔值。
  • 示例
const arr = [1, 2, 3, 4];
const result = arr.some((item) => item > 3);
console.log(result); // true

.every()

  • 作用:测试数组中的所有元素是否都满足在提供的函数中实现的测试条件。只有所有元素都满足条件,才返回 true
  • 返回值:布尔值。
  • 示例
const arr = [1, 2, 3, 4];
const result = arr.every((item) => item < 5);
console.log(result); // true

.includes()

  • 作用:检查数组是否包含某个值。
  • 返回值:布尔值。
  • 示例
const arr = [1, 2, 3];
const result = arr.includes(2);
console.log(result); // true

.indexOf()

  • 作用:返回数组中某个值的索引,如果不存在则返回 -1
  • 返回值:索引值。
  • 示例
const arr = [1, 2, 3];
const index = arr.indexOf(2);
console.log(index); // 1

5. 数组操作

这些方法用于对数组进行添加、删除或排序操作。

.concat()

  • 作用:合并两个或多个数组,返回一个新数组。
  • 返回值:新数组。

.slice()

  • 作用:返回数组的一个浅拷贝,不修改原数组。
  • 返回值:新数组。
const arr = [1, 2, 3, 4];
const newArr = arr.slice(1, 3);
console.log(newArr); // [2, 3]

.splice()

  • 作用:可以添加、删除或替换数组中的元素,会直接修改原数组。
  • 返回值:被删除的元素组成的数组。
const arr = [1, 2, 3, 4];
arr.splice(2, 1, 5); // 从索引2开始,删除1个元素,添加5
console.log(arr); // [1, 2, 5, 4]

.sort()

  • 作用:对数组进行排序,会直接修改原数组。
  • 返回值:排序后的数组。
  • 示例
const arr = [3, 1, 4, 2];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4]

注意:回调函数的规则

回调函数接受两个参数,通常称为 ab,分别代表数组中需要比较的两个元素。回调函数的返回值决定了排序的顺序:

  • 如果回调函数返回一个 负数,则 a 会被排在 b 之前。
  • 如果回调函数返回 0,则 ab 的顺序不变。
  • 如果回调函数返回一个 正数,则 b 会被排在 a 之前。

6. 其他操作

这些方法用于其他特定的数组操作。

.reverse()

  • 作用:反转数组中的元素,会直接修改原数组。
  • 返回值:反转后的数组。

.join()

  • 作用:将数组中的所有元素连接成一个字符串。
  • 返回值:字符串。

总结区别

遍历数组: .forEach().for...of 都用于遍历数组,但 .forEach() 是回调函数方式,而 .for...of 是语法糖,更简洁。