JavaScrip中 Array.reduce()
数组的方法 reduce()
reduce方法在数组的每一项元素上都会执行回调函数。
语法:array.reduce( callBack [ , init] )
// 语法
arrary.reduce(function(pre, val, ind, arr){
// ....
}, init)
回调函数的参数有:初始值/上一次回调返回值、当前元素、当前索引、原数组。
callBack 函数:callBack(pre, val, ind, arr)。
pre:初始值init 或 上一次回调函数的返回值。提供初始值init,作为首次回调函数的第一个参数pre的值使用。
val: 当前元素。
ind: 当前索引。
arr: 原数组。
init初始值:作为首次回调函数的第一个参数的pre值使用。
1.求和
const array = [1, 2, 3, 4, 5]
const total = array.reduce((pre, val) => pre + val, 0)
console.log(total) // 15
const array = [
{ num: 10 },
{ num: 20 },
{ num: 30 }
]
const total = array.reduce((pre, val) => pre + val.num, 0)
console.log(total) // 60
2.最大值
const array = [1, 2, 3, 8, 5, 2, 4]
const max = array.reduce((pre, val) => Math.max(pre, val))
// const max = array.reduce((pre, val) => pre > val ? pre : val)
// const max = arrary.reduce(pre, val) => Math.max(pre, val), array[0])
console.log(max ) // 8
const array = [
{ num: 120 },
{ num: 10 },
{ num: 200 },
{ num: 30 }
]
const max= array.reduce((pre, val) => Math.max(pre, val.num), array[0].num)
// const max= array.reduce((pre, val) => Math.max(typeof pre === 'number' ? pre : pre.num, val.num))
console.log(max) // 200
3.其他用法
const array = [
{ age: 18, name: '花花' },
{ age: 19, name: '韩梅' },
{ age: 16, name: '小白' },
{ age: 17, name: '框猪' }
]
const res = array.reduce((pre, val, ind, arr) => {
let s = ''
let e = ''
switch (ind) {
case 0:
s = ''
break
case arr.length - 1:
s = '和'
e = '。'
break
default:
s = '、'
}
return pre + `${s}${val.name}${e}`
}, '参与者有')
console.log(res) // 参与者有花花、韩梅、小白和框猪。
const array = [
{ age: 18, name: '花花', type: 1 },
{ age: 19, name: '韩梅', type: 3 },
{ age: 16, name: '小白', type: 2 },
{ age: 17, name: '框猪', type: 1 },
{ age: 17, name: '懵萌', type: 1 },
{ age: 20, name: '大卫', type: 3 }
]
const Obj = array.reduce((pre, val) => {
pre[val.type] ? pre[val.type].push(val) : pre[val.type] = [val]
return pre
}, {}) console.log(Obj)
/* 实现数组分类
{
1: [
{ age: 18, name: '花花', type: 1 },
{ age: 17, name: '框猪', type: 1 },
{ age: 17, name: '懵萌', type: 1 }
],
2: [
{ age: 16, name: '小白', type: 2 }
],
3: [
{ age: 19, name: '韩梅', type: 3 },
{ age: 20, name: '大卫', type: 3 }
]
}
*/
JavaScrip中 Array.reduce()的更多相关文章
- javascrip中array使用(续)
ECMAScript 5中的数组的方法 Ecmascript5定义了9个新的数组方法遍历,映射,过滤,检测,简化和搜索数组. 1.forEach() Array.orEach()方法从头到尾遍历数组, ...
- javascrip中array使用
一.测试数组长度是使用arr.length;(注:使用delete不会修改数组的length属性) 二.数组方法 1.join() Array.join()方法将数组所有元素都转化为字符串连接在一起, ...
- 用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数
有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数. 用es6的Array.reduce()函数配合“...”扩展符号可以更方便的处理该问题. s='abananbaacnncn' [. ...
- Js中Array数组学习总结
第一次写博客...有点方... 小白一枚(是真的小白),自学前端,下面来说说我在学习过程中总结的一些数组操作,如果说哪有错误,请各位大神多多指出,小的虚心接受. 引用类型分为Object类型(所谓的对 ...
- Array.reduce()学习
昨天遇到的一道题:1234567890 => 1,234,567,890 要求其实就是使用逗号做千分位将数字进行分隔. 当时没想到任何方法,但是以前看到过,印象很深刻,今天就找了一下. 看到其实 ...
- 数组中的reduce 函数理解
第一次见到reduce 是在js 的高级程序设计中,它的意思是把一个数组减少为一个数,举的例子是数组中元素的求和.它接受一个函数作为参数,函数又有两个参数,一个是prev, 前一个值,一个是next, ...
- JS Array.reduce 对象属性累加
Array reduce() 方法 ,无非就是 计算数组元素 相加后的总和 ,看网上给的Demo 全是 [1,2,3,4,6].reduce 这种基本用法, 本次我将使用 reduce 实现 数组 ...
- JavaScript中Array
一,针对于数组 const arr = ['a','b','c','d']; Array.indexOf 将“返回第一次出现给定元素的索引”; console.log(arr.indexOf('b' ...
- Array.reduce()方法的使用
起因是学习异步函数的串行与并行写法时,发现reduce方法可以简化写法,然后看到一篇博客里面这样一段代码: var array = [1, [2, [3, 4], 5], 6]; function f ...
随机推荐
- 被字节跳动、小米、美团面试官问的AndroidFramework难倒了? 这里有23道面试真题,助力成为offer收割机!
目录 1.Android中多进程通信的方式有哪些?a.进程通信你用过哪些?原理是什么?(字节跳动.小米)2.描述下Binder机制原理?(东方头条)3.Binder线程池的工作过程是什么样?(东方头条 ...
- Docker入门第三章
配置阿里云镜像加速器 1.首先打开阿里云,搜索容器镜像服务,打开如下 2.配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.j ...
- Microservices==>Service Mesh==>Serverless,走马观花
[0] 始有道 话说图灵开天辟地,冯.诺伊曼造石补天! 始有道道生ML Machine LanguageML生汇编 assembler汇编生编译器 compiler编译器生PL Programming ...
- alpakka-kafka(8)-kafka数据消费模式实现
上篇介绍了kafka at-least-once消费模式.kafka消费模式以commit-offset的时间节点代表不同的消费模式,分别是:at-least-once, at-most-once, ...
- 计算机毕业设计项目-基于SSM的学生会管理系统-基于ssm的社团信息管理系统
注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM 前端技术:HTML+CSS+JavaScript+Bootstrap+jQuery 数据库: ...
- Git出错:“Please make sure you have the correct access rights and the repository exists.”
此问题是需要重置ssh密钥 解决步骤如下: 1.重置用户名和邮箱: 打开Git Bash 进入Git命令,输入以下命令 git config --global user.name "你的用户 ...
- 模拟退火 Simulated annealing
模拟退火 Simulated annealing 看看有空把图片完善一下好了 模拟退火算法的一些背景 既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法 ...
- 000 PCI Express协议入门指南目录
一.001 PCI Express体系结构(一)
- 尝试通过 JDBC 将 UTF-8 插入 MySQL 时出现“乱码”
这是我的连接设置方式: Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true& ...
- 数字化转型:敏捷和DevOps如何降低风险,提高速度
进行数字化转型就意味着团队需要应对经常发生冲突的挑战--例如,要应对在复杂的相互依赖环境中快速变化的需求.对软件开发人员来说,这是一个熟悉的困境. 如果使用传统的瀑布方法来应对这些挑战,就会发现,在线 ...