reduce函数的用法

作者: 伊泽瑞尔灬 | 来源:发表于2020-05-14 09:19 被阅读0次

这是一个考察面试者对reduce函数用途的js面试题。下面我们看一下reduce函数的函数介绍:

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 对于空数组是不会执行回调函数的。参数如下:

参数说明

可以看到这是一个求和,或者统计有关的函数,那么可以得出以下用途。
基础数据:

const baseData = [
       {age: 10, name: '小明'},
       {age: 15, name: '小黄'},
       {age: 18, name: '小王'},
       {age: 18, name: '小白'},
       {age: 21, name: '小陈'}
]
1. 数组求和

求出数组中所有年龄的和:

// 方法一
baseData.reduce((total, currentValue) => total + currentValue.age, 0);
// 方法二
baseData.reduce((previousValue, currentValue, index) => {
  console.log(index)
  if(typeof previousValue === 'number') {
    return previousValue + currentValue.age
  } else {
    return previousValue.age + currentValue.age
  }
})

运行截图:


运行结果

上面求和有2种写法,我们重点看一下第二种写法,可以看到第二种方式没有传第二个参数,这就导致previousValue变量可能是返回结果的和,也可能是函数的第一项,所以需要特殊判断一下。而且遍历开始的index也是从1开始的。2种方式来看,第一种更简便,第二种会少一次循环。

2. 数组去重

去掉数组中年龄重复的数据

let resultArr = baseData.reduce((result, currentValue, index) => {
    if (!result.find(item => item.age === currentValue.age)) {
            result.push(currentValue)
        }
    return result
  }, [])
  console.log(resultArr, 'result')
3. 统计个数

找出年龄小于18岁的数据

baseData.reduce((result, currentValue) => currentValue.age < 18 ? ++result : result, 0); // 2
4. 多维数组转换为一维数组
let arr = [[0, 1], [2, 3], [4,[5,6,7]]]
const newArr = function(arr){
   return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
}
console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7]
5. 统计一个数组中每个元素出现的次数
const arraySum = (arr, val) => arr.reduce((acc, cur) => {
    return cur == val ? acc + 1 : acc + 0
}, 0);

let arr = [ 0, 1, 3, 0, 2, 0, 2, 3 ]
console.log(arraySum(arr, 0)) // 数组arr中 0 元素出现的次数为3

兼容性

1.png

可以看出除了特别老的浏览器,其他都支持了,放心使用。

总结

可以看到,reduce函数应用在数组求和,数组去重,统计,数组转换等方面。熟练掌握能减少你的代码量。使代码变更更简洁,提高开发效率。


线上体验地址:访问

所有的源码都可以在我的仓库地址:访问

学习如逆水行舟,不进则退,前端技术飞速发展,如果每天不坚持学习,就会跟不上,我会陪着大家,每天坚持推送博文,跟大家一同进步,希望大家能关注我,第一时间收到最新文章。

公众号前端每日面试:


公众号

相关文章

  • 2019-01-24记录

    计算函数被执行次数 ---- javascript reduce()函数的用法(): reduce函数可 接受一个...

  • reduce函数的用法

    reduce是属于数组Array的方法,它的功能是实现累加。使用方法是: 既然是累加,直观的用法是: 初级玩法: ...

  • reduce函数的用法

    这是一个考察面试者对reduce函数用途的js面试题。下面我们看一下reduce函数的函数介绍: reduce()...

  • reduce()函数用法简单分析

    菜鸟教程-reduce直通车JS函数在线编辑直通车 用法 reduce() 方法接收一个函数作为累加器,数组中的每...

  • Swift中 高阶函数reduce解析

    Swift 引入了一些高阶函数,比如map、filter、reduce,今天简单介绍一下reduce的用法. re...

  • Python学习笔记06-函数式编程

    高阶函数 下面介绍一下函数的高级用法,包括Map/Reduce、filter、sorted、lambda、deco...

  • 2021-11-20,reduce的用法

    Array.reduce()的用法 reduce()方法对数组中的每个元素执行一个由您提供的reducer函数(升...

  • js 高阶函数

    filter map reduce filter 高阶函数的用法 filter 中的回调函数有一个要求:必须返回...

  • 2018-08-11

    reduce用法: reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个...

  • js数组常用操作及实例

    主要介绍map,reduce,filter,forEach,然后介绍箭头函数的用法,并在最后给出实例 map 映射...

网友评论

    本文标题:reduce函数的用法

    本文链接:https://www.haomeiwen.com/subject/pduznhtx.html