JavaScript中的数组方法:map、filter和reduce
原创JavaScript数组提供了许多强大的内置方法,其中map、filter和reduce是最常用的三个高阶函数。它们可以帮助我们以声明式的方式处理数组数据,而不是使用传统的for循环。
1. map方法
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后的返回值。
const numbers = [1, 2, 3, 4, 5];// 将每个数字乘以2const doubled = numbers.map(num => num * 2);console.log(doubled); // [2, 4, 6, 8, 10]// 将数字转换为字符串const stringNumbers = numbers.map(num => num.toString());console.log(stringNumbers); // ["1", "2", "3", "4", "5"]2. filter方法
filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
const numbers = [1, 2, 3, 4, 5];// 过滤出偶数const evens = numbers.filter(num => num % 2 === 0);console.log(evens); // [2, 4]// 过滤出大于3的数字const greaterThanThree = numbers.filter(num => num > 3);console.log(greaterThanThree); // [4, 5]3. reduce方法
reduce()方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
const numbers = [1, 2, 3, 4, 5];// 计算总和const sum = numbers.reduce((accumulator, currentValue) => { return accumulator + currentValue;}, 0);console.log(sum); // 15// 找出最大值const max = numbers.reduce((max, current) => { return current > max ? current : max;}, numbers[0]);console.log(max); // 5组合使用示例
这些方法可以优雅地组合在一起,实现复杂的数据处理:
const products = [ { name: 'iPhone', price: 999, category: 'electronics' }, { name: 'MacBook', price: 1499, category: 'electronics' }, { name: 'T-shirt', price: 20, category: 'clothing' }, { name: 'Jeans', price: 50, category: 'clothing' }, { name: 'Coffee Mug', price: 15, category: 'kitchen' }];// 计算电子产品的总价格const electronicsTotal = products .filter(product => product.category === 'electronics') .map(product => product.price) .reduce((sum, price) => sum + price, 0);console.log(electronicsTotal); // 2498总结
map():用于转换数组中的每个元素filter():用于筛选数组中的元素reduce():用于将数组减少为单个值这些方法不仅使代码更简洁,而且更易于阅读和维护。它们鼓励不可变的数据处理方式,符合函数式编程的原则。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。
开发学习网




