filter
方法和 reduce
方法是 JavaScript 数组的两个常用方法,它们在功能和用法上有一些区别。
-
filter
方法:- 功能:
filter
方法用于过滤数组中的元素,返回一个新的数组,其中包含满足指定条件的元素。 - 用法:
filter
方法接受一个回调函数作为参数,该回调函数会对数组中的每个元素进行判断,如果返回值为true
,则将该元素添加到新数组中,否则不添加。 - 示例:
const numbers = [1, 2, 3, 4, 5]; const evenNumbers = numbers.filter(num => num % 2 === 0); console.log(evenNumbers); // [2, 4]
- 功能:
-
reduce
方法:- 功能:
reduce
方法用于对数组中的元素进行累积计算,返回一个最终的结果。 - 用法:
reduce
方法接受一个回调函数和一个初始值作为参数。回调函数接受两个参数,第一个参数是累积值(初始值或上一次回调函数的返回值),第二个参数是当前元素。回调函数会对数组中的每个元素进行计算,并将计算结果作为下一次回调函数的累积值。 - 示例:
const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((acc, num) => acc + num, 0); console.log(sum); // 15
- 功能:
总结:
filter
方法用于过滤数组中的元素,返回一个新的数组。reduce
方法用于对数组中的元素进行累积计算,返回一个最终的结果。filter
方法的回调函数返回值为true
或false
,用于判断是否将元素添加到新数组中。reduce
方法的回调函数返回值为累积值,用于下一次回调函数的计算。filter
方法不会改变原数组,而reduce
方法可以改变原数组。