reduce()用法总结,二维数组转一维数组,多维数组转一维数组,求数组最大值、最小值 | 您所在的位置:网站首页 › php二维数组变成一维数组 › reduce()用法总结,二维数组转一维数组,多维数组转一维数组,求数组最大值、最小值 |
链接: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 = [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 实验室设备网 版权所有 |