什么情况下会使用array.reduce函数
当业务需要从一个数组里求出某项的和的时候.
1.for遍历
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var resulte = 0; for (let index = 0; index < a.length; index++) {
resulte += a[index];
} console.log(resulte); //55
又或者会去这样实现
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var resulte = 0; a.forEach(i => resulte += i) console.log(resulte); //55
其实js的数组内置函数早已经帮我们实现好了
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] const INITVAL = 0;//默认从0开始累加,可要可不要 var resulte = a.reduce((prev, item) => prev + item, INITVAL) console.log(resulte); //55
如何实现一个简单的reduce
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] const INITVAL = 0;//默认从0开始累加,可要可不要 var resulte = a.reduce((prev, item) => prev + item, INITVAL) console.log(resulte); //55
``` [reduce使用教程](https://www.runoob.com/jsref/jsref-reduce.html) ### 如何实现一个简单的reduce ```
Array.prototype.myReduce = function (cb, initVal) {
var resulte = initVal;
var len = this.length;
var i = 0;
//空数组不执行
if (len === 0) {
return console.log('数组不能为空')
}
//initVal如果不为空,索引+1
if (initVal === undefined) {
resulte = this[i]
i = 1
}
for (i; i < len; i++) {
var item = this[i];
resulte = cb(resulte, item, i);
}
return resulte
} var b = [1, 3, 4, 5, 6]
var persons = [
{
name: "张三",
age: 18
}, {
name: "李四",
age: 36
}
] var agesum= persons.myReduce((a,c)=> a+c.age,0)
var r = b.myReduce(function (pre, item, index) {
console.log(pre, item, index); //上一个值, 遍历的当前项 , 索引
return pre + item
}, 7)
console.log(r);
console.log(agesum);
什么情况下会使用array.reduce函数的更多相关文章
- 如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)
0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如 ...
- SQL&EF优化第一篇 各种情况下的性能测试之count函数篇
测试环境 mssql 08 +win7 数据 30W条 二〇一六年十月二十九日 09:04:43 结论:1>主键> *>可空列 推测未论证: 根据情况优先选择 顺便提 ...
- 用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数
有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数. 用es6的Array.reduce()函数配合“...”扩展符号可以更方便的处理该问题. s='abananbaacnncn' [. ...
- 如何在不使用系统函数的情况下实现PHP中数组系统函数的功能
PHP中为我们提供了各种各样的系统函数来实现我们需要的各种功能,那么,在不使用系统函数的情况下我们要怎样来实现这些功能呢?以下就是几种系统函数的实现方式. 首先,我们来定义一个数组: $arr= ar ...
- JavaScript进阶系列04,函数参数个数不确定情况下的解决方案
本篇主要体验函数参数个数不确定情况下的一个解决方案.先来看一段使用函数作为参数进行计算的实例. var calculate = function(x, y, fn) { return fn(x, y) ...
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
- 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
在我们平常想要获取字典中value最大或者最小的值的时候,常常使用如下函数: testDict = {"age1":18,"age2":20,"age ...
- linux i2c 的通信函数i2c_transfer在什么情况下出现错误
问题: linux i2c 的通信函数i2c_transfer在什么情况下出现错误描述: linux i2c设备驱动 本人在写i2c设备驱动的时候使用i2c transfer函数进行通信的时候无法进行 ...
- C++11 std::call_once:保证函数在任何情况下只调用一次
std::call_once的作用是很简单的, 就是保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次.比如一些init函数,多次调用可能导致各种奇怪问题. 给个例子: #includ ...
- teradata 字符串数据合并 在concat()函数无法使用的情况下
在teradata sql中不存在concat()函数或者stuff()函数,在此情况下,如何实现多条字符串数据合并成一行? 在查找不同方法过程中,在stackflow中找到最简便的方法,使用xml_ ...
随机推荐
- css样式相关的惊艳的属性
CSS gap 简写属性用于设置行与列之间的间隙(网格间距). 规范的早期版本将该属性命名为 grid-gap,且为了保持与旧网站的兼容性,浏览器仍然会接受 grid-gap 作为 gap 的别名. ...
- AIRIOT物联网低代码平台如何配置http客户端?
AIRIOT物联网低代码平台一直保持和市场脉搏同频,支持市面上95%以上驱动,驱动能力夯实,大大满足任意数据采集需求.AIRIOT支持分布式部署,数据采集能力强,解决海量数据采集一台服务器采集困难的问 ...
- Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
一.写在开头 在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized.Lock或者AtomicInteger: ...
- Docker 必知必会4----容器之间的通信
前面几篇文章,我们基本聊了docker的基本概念,以及基本的操作手段: https://www.cnblogs.com/jilodream/p/18177695 初识dockerhttps://w ...
- 【c++】函数模板
语法: template<class & T1,class &T2> auto Add(T1 t,T2 t2) ->decltype(t+t2); 函数定义: t ...
- CSS——选择器的优先级
所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.样式表中的特殊性描述了不同规则的相对权重. !important > 行内样式>ID选择器 > 类选择器 > 标签 ...
- WPF开发快速入门【5】DataGrid的使用
概述 DataGrid是最常用的一种列表数据展现控件,本文介绍DataGrid的一些常用操作,包括:展示.新增.删除.修改等.以下代码基于Stylet框架实现. 数据展示 DataGrid用于对象列表 ...
- NOIP模拟63
T1 电压机制 解题思路 先找出这个图的一个生成树,然后没有称为树边的边就都是返祖边了. 对于一个边是合法的当且仅当它属于所有的奇数环并且不属于任何一个偶数环. 可以利用树上差分进行修改,更改一个返祖 ...
- NCNN的内存显存分配器ncnn::Allocator & ncnn::VkAllocator翻译及其差异对比的学习笔记(nihui亲审过滴)
NCNN的内存分配器 ncnn::Allocator 通用内存分配器 ncnn::PoolAllocator 内存池分配器 可以设置池大小,减少分配内存和析构内存次数,空间换时间 ncnn:: ...
- Cage 字符串听课笔记
困困困! KMP 注意到 KMP 的复杂度是均摊的,那么是否可以绕开? 注意到 KMP 实际上一个串的 ACAM,那么考虑可以类似的,在加入一个字符的同时维护 ACAM(考虑 ACAM 的构建过程,前 ...