zoukankan      html  css  js  c++  java
  • javascript之reduce()方法的使用

      以前看到reduce方法,总是看得我头皮发麻,今天无意间又遇到他了,于是学习了下,接触之后,觉得这个方法还挺好用的,在很多地方都可以派上用场,比如,数组中元素求和、数组去重、求数组中的最大值或最小值等等都可以用到它。

      reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

      语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

      可以看出它接收一个回调函数和一个初始值。

      其中total为初始值或者计算后的返回值(必须)、currentValue为当前元素(必须)、currentIndex为当前元素索引(可选)、arr为当前元素所属的对象(可选)、initialValue为传递给函数的初始值

      

      案例1:数组去重

    // 数组去重
    var arr = [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
    var newArr = arr.reduce(function (prev, next) {
    	prev.indexOf(next) == -1 && prev.push(next)
    	return prev
    }, [])
    console.log(arr)  // [12, 34, 34, 342, 345, 34, 123, 345, 45, 12]
    console.log(newArr) // [12, 34, 342, 345, 123, 45]
    

      初始化一个空数组,判断下一个元素是否在当前数组中,不存在则添加到当前数组中。

      案例2:数组中元素求和

    // 数组求和
    var arr = [1, 2, 3, 4, 5]
    var total = arr.reduce(function (prev, next) {
    	return prev + next
    }, 0)
    console.log(total)
    

      将0当做reduce回调函数中的初始值,然后依次累加

      案例3:求数组中最大值或最小值:

    // 获取数组中最大值
    var arr = [134798, 3478973, 12, 345, 355, 425, 1342356, 3425566, 7908798]
    var max = arr.reduce(function (prev, next) {
    	return Math.max(prev, next)    // Math.min(prev, next)
    }, 0)
    console.log(max)
    

      

      tips:initialValue为传递给函数的初始值,假如该值不存在时,则回调函数的初始值为数组中的第一项,即回调函数中的prev值

      

  • 相关阅读:
    HDU 3697贪心
    HDU 3226 背包
    numpy_2nd 新建矩阵的五种方法 array zeros empty arange().reshape()
    numpy_1st 属性 ndim,shape,size
    CV学习笔记第二课(上)
    33. 搜索旋转排序数组 二分法
    35. 搜索插入位置 今天就是二分法专场
    34.在排序数组中查找元素的第一个和最后一个位置 二分法
    CV第三课
    CV第二课(下)
  • 原文地址:https://www.cnblogs.com/jf-67/p/10768198.html
Copyright © 2011-2022 走看看