- 数组过滤(
filter
):
- 应用场景:从一个数组中筛选出符合特定条件的元素。例如,从一个包含多个数字的数组中筛选出所有偶数。
- 代码示例:
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter((number) => number % 2 === 0);
console.log(evenNumbers);
- 解释:
filter
是 JavaScript 数组的一个高阶函数,它接受一个回调函数作为参数。这个回调函数会针对数组中的每个元素执行,返回 true
或 false
。如果回调函数返回 true
,该元素就会被包含在 filter
返回的新数组中;如果返回 false
,则该元素被排除。
- 数组映射(
map
):
- 应用场景:对数组中的每个元素进行相同的操作,然后返回一个新数组。例如,将数组中的每个数字都平方。
- 代码示例:
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map((number) => number * number);
console.log(squaredNumbers);
- 解释:
map
也是 JavaScript 数组的高阶函数,它同样接受一个回调函数。回调函数会对数组的每个元素执行,返回值会组成一个新的数组。在上述例子中,回调函数将每个数字进行平方操作,map
函数返回一个新数组,其中每个元素都是原数组对应元素的平方。
- 函数柯里化:
- 应用场景:将一个多参数函数转换为一系列单参数函数,便于复用部分参数。例如,在一个计算面积的函数中,固定其中一个参数。
- 代码示例:
function multiply(a) {
return function(b) {
return a * b;
};
}
const double = multiply(2);
const result = double(5);
console.log(result);
- 解释:
multiply
函数返回一个新函数,这个新函数使用了外部函数 multiply
的参数 a
。double
函数实际上就是 multiply
函数固定了 a
为 2
的版本,当调用 double(5)
时,就相当于计算 2 * 5
。这里 multiply
函数就是一个高阶函数,因为它返回了一个函数。