reduce()用法总结,二维数组转一维数组,多维数组转一维数组,求数组最大值、最小值 您所在的位置:网站首页 php二维数组变成一维数组 reduce()用法总结,二维数组转一维数组,多维数组转一维数组,求数组最大值、最小值

reduce()用法总结,二维数组转一维数组,多维数组转一维数组,求数组最大值、最小值

2024-06-13 15:38| 来源: 网络整理| 查看: 265

链接:https://zhuanlan.zhihu.com/p/65235741

https://blog.csdn.net/hbwang_716/article/details/105156431

定义

reduce()方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。语法为:

array.reduce(function(accumulator, currentValue, currentIndex, arr), initialValue); /* accumulator: 必需。累计器 currentValue: 必需。当前元素 currentIndex: 可选。当前元素的索引; arr: 可选。要处理的数组 initialValue: 可选。传递给函数的初始值,相当于accumulator的初始值 默认'',求和写 0 数组写 [] 对象写{} */

解释

简单来说就是对一个array执行reduce()方法,就是把其中的function()挨个地作用于array中的元素上,而且上一次的输出会作为下一次的一个输入。例如下面这个对array求和的例子。

let array = [1, 2, 3, 4, 5]; array.reduce((sum, curr) => sum + curr, 0); // 得到15

执行流程图如下:

令f(a, b)= a + b, 也可以一次性写为:

array.reduce = f( f( f( f( f(0, 1) ,2) ,3), 4) ,5)

奉上一个GIF

常见用法 求加法(乘法同理) let arr = [1, 2, 3, 4, 5]; arr.reduce((sum, curr) => sum + curr, 0); // 得到15

此基础上还可以求平均值

求最大值(最小值同理) let arr = [23,123,342,12]; let max = arr.reduce((pre,cur,index,arr) => { return pre > cur ? pre : cur },0); 简写 const array = [5,4,7,8,6,2,3,1]; 1.求和 array.reduce((a,b) => a+b);//36 2.最大值 array.reduce((a,b) => a>b?a:b);//8 最小值 array.reduce((a,b) => a {return item.charCodeAt() - 48}) // 得到 [4, 3, 2, 1, 4] .reduce((a, b) => {return a * 10 + b}) // 得到 43214 字符统计/单词统计同理 let str = 'abcdaabc'; ​ str.split('').reduce((res, cur) => { res[cur] ? res[cur] ++ : res[cur] = 1 // 如果cur第一次出现,记为1 return res; // 否则记录数+1 }, {}) // 得到 {a: 3, b: 2, c: 2, d: 1} 数组去重 let arr = [1, 2, 3, 4, 4, 1] let newArr = arr.reduce((pre,cur) => { if(!pre.includes(cur)){ return pre.concat(cur) }else{ return pre } },[]) // 得到 [1, 2, 3, 4]

数组维度转换

let arr = [[0, 1], [2, 3], [4, 5]] // 二维数组 let newArr = arr.reduce((pre,cur) => { return pre.concat(cur) // 合并pre 与 cur, 并返回一个新数组 },[]) console.log(newArr); // 一维数组 [0, 1, 2, 3, 4, 5]

将多维数组转化为一维

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]

对象里的属性求和

var result = [     {         subject: 'math',         score: 10     },     {         subject: 'chinese',         score: 20     },     {         subject: 'english',         score: 30     } ];   var sum = result.reduce(function(prev, cur) {     return cur.score + prev; }, 0); console.log(sum) //60



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有