Array的reduce方法

2023-11-06

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
})

结果如下:

1,2
undefined 3
undefined 4
undefined 5
undefined 6

reduce方法回调函数的四个参数的意义:
pre:上一次返回的值(起初调用的时候pre就是数组的第一个值)
value:起初调用时数组的第二个值,下一次调用就是第三个值,以此类推。

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
	return 99;
})

结果如下:

1,2
99 3
99 4
99 5
99 6

如果有返回值,那么pre就是返回的值。

let arr = [1,2,3,4,5,6];
arr.reduce(function(pre,value,index,array){
	console.log(pre,value);
	return 99;
},0)

结果如下:

0,1
99 2
99 3
99 4
99 5
99 6

reduce方法的回调函数如果设置了第二个参数,那么起初调用的时候pre的值就是0,那么value的值就是从数组的第一个值开始的

reduce方法可以用来累加数组里面的值:

let arr = [1,2,3,4,5];
//第一中方法
var res = arr.reduce(function(pre,value){
	return pre + value
})
console.log(res)
//第二种方法
var res = arr.reduce(function(pre,value){
	return pre+=value
},0)
console.log(res)

reduce方法可以检测数组里面的某个值重复了几次

let arr = [1,2,3,1,1,1];
function arrayCount(array,item){
	return array.reduce(function(total,cur){
		total += item ==cur?1:0
		return total;
	},0)
}
console.log(arrayCount(arr,1))

total += item ==cur?1:0 解释
if(item==cur){
	total += 1;
}else{
	total +=0;
}

reduce可以用来检索数组中的最大值

let arr = [1,2,3,4,5,6,66];
var max = arr.reduce(function(pre,value){
	return pre>value?pre:value
})
console.log(max)

reduce方法去重数组

let arr = [1,2,2,3,3,3,4,4,5,5];
arr.reduce(function(arr,cur){
	if(arr.includes(cur) === false){
		arr.push(cur);
	}
	return arr;
},[])

利用reduce去除购物车重复商品

let cart = [
    {name:"iphone",price:12000},
    {name:"imac",price:25000},
    {name:"ipad",price:3600},
    {name:"ipad",price:3600},
    {name:"iphone",price:12000},
];
function filterGoods(goods){
	return goods.reduce(function(arr,cur){
		let find = arr.find(function(v){
			return v.name === cur.name;
		})
		if(!find)arr.push(cur)
		return arr
	},[])
}

利用reduce检索购物车中商品价格大于10000的商品名称

let cart = [
    {name:"iphone",price:12000},
    {name:"imac",price:25000},
    {name:"ipad",price:3600}
];
function getGoodsName(goods,price){
	return goods.reduce(function(arr,cur){
		if(cur.price>price)arr.push(cur)
	},[]).map(function(item){
		return item.name
	})
}
console.log(getGoodsName(cart,10000))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Array的reduce方法 的相关文章

随机推荐

  • C语言分支循环语句

    需提前看 初识C语言 5 C语言一些基本常识 目录 分支语句 if语句 单if语句使用 if else语句 if else if else语句 switch语句 switch基本结构 break作用 default作用 循环语句 while
  • 【Vscode

    Rmd文件转html R语言环境 Vscode扩展安装及配置 配置radian R依赖包 pandoc安装 配置pandoc环境变量 验证是否有效 转rmd为html 注意本文代码块均为R语言代码 在R语言环境下执行即可 R语言环境 官网中
  • shell I/O重定向

    shell重定向 lt 改变标准输入 program lt file 可将program 的标准输入改为file tr d r lt dos file txt 以 gt 改变标准输出 program gt file 可将program的标准
  • Qt基础之三十:百万级任务并发处理

    在实际的开发过程中 经常会遇到要处理大量任务场景 比如说压缩文件夹中的所有文件 对文件夹中的所有文件加密 上传文件夹中的所有文件到ftp等等 这里说百万级并不夸张 理论上文件夹中有任意多个文件都是可以的 本文以压缩文件夹中的100万张jpg
  • 三国志13pk版登录武将输入中文名方法与更改图像详解

    今天来个正经的文 三国志13里登录武将 设定姓名时 如果用的是自带输入法 就会出现一堆乱码 这时候 有两种解决方法 下载一个具有大五码的输入法 然后输入时候既要切换输入法 切换繁体 切换窗口模式 很麻烦 尤其在输入列传的时候 打很多字会很不
  • 【架构优化过程思考】技术方案评估的三个维度

    方案的选择决定了当下实现方案的资源投入及产出对产 也决定后续的成本 评估一个方案 首先要评估这个方案的有效性 也就是说要解决这个问题 实现目标 当前的这个方案是否足够的有效 还是在部分的场景下有效 如果是全部的有效那么该方案就不会出现上线之
  • 二叉树--合并二叉树

    问题 已知两颗二叉树 将它们合并成一颗二叉树 合并规则是 都存在的结点 就将结点值加起来 否则空的位置就由另一个树的结点来代替 思路 通过二叉树的前序遍历方法进行遍历 同时 t1二叉树作为蓝本进行计算 注意设置两个指针记录t1和t2遍历到的
  • JavaScript重写alert,confirm,prompt方法(JavaScript实现线程非阻塞式暂停和启动)

    得有段时间没好好写篇博客了 这次我们从一个题目开始吧 首先我给大家出一道题目 大家可以先思考一下 再往下看 题目是 请用JavaScript重写confirm方法 实现和confirm同样的功能 乍一看可能感觉很简单 定义一个confirm
  • php cms 自动分词,灵活运用PHPAnalysis分词组件,实现Phpcms v9关键词自动分词

    在2019年12月下旬 Phpcms官网phpcms cn关闭后 原有的分词api接口 http tool phpcms cn api get keywords php 已经失效 在录入标题后再也不能自动提取关键词到关键词的输入栏了 针对这
  • ReentrantLock的实现

    ReentrantLock可重入锁 我们可以利用这个实现对某一个操作约束为同有个时刻只能有一个线程能够操作 我们呢先看一下下面这个demo public class ReentrantLockTest public static void
  • 初级黑客入门指南——强烈推荐

    黑客指的是在计算机或计算机网络中发现弱点的人 尽管这个术语也可以指对计算机和计算机网络有深入了解的人 黑客的动机可能是多方面的 比如利润 抗议或挑战 围绕黑客发展的亚文化通常被称为 地下计算机 但现在它是一个开放的社区 虽然黑客这个词的其他
  • Python之由公司名推算出公司官网(余弦相似度)

    读大学时期写的博文 1 问题 对展会数据分类后 我的新任务是如何通过 公司名 公司地址 国家等海关数据推断出该公司的官网网站 若官网不存在则不考虑 以下数据仅供参考 公司名 国家 地址 JPW INDUSTRIES INC 427 NEW
  • 经典神经网络 -- DenseNet : 设计原理与pytorch实现

    原理 概念与网络结构 DenseNet模型 它的基本思路与ResNet一致 但是它建立的是前面所有层与后面层的密集连接 dense connection DenseNet的一大特色是通过 特征在channel上的连接 来实现特征重用 fea
  • 《Python笔记》安装(pip)第三方包报错

    目录 Python版本 报错信息 pip 安装numpy报错 pip 安装 scipy报错 pip 安装 pywin32 报错 解决办法 网络方法1 网络方法2 亲测解决方法 Python版本 python Python 3 8 10 ta
  • 使用QT的QChart写自己的示波器_QChart波形显示

    我几个月前最开始学习QT 就是从完成波形显示的功能开始的 之前工作的上位机需要有虚拟示波器功能 也就是波形显示 不曾玩过QT的小白 被安排学习完成一下 当时便选用QChart 根据领导需求也更新迭代过2次代码 第一次参考大佬 ctrl c
  • 2019年厦门大学计算机系夏令营经历

    2019 07 12 2019 07 15 厦门大学信息学院夏令营 计算机系笔试 上机 面试 一 笔试 数据结构 2019 07 13 填空题 一空三分 顺序存储 将一个数插到数字i下标的前面 需要移动多少个元素 m数组和n数组 最坏情况下
  • Function.prototype.bind() ,Function.prototype.call() and function.prototype.apple()

    function prototype bind Function prototype call function prototype apple
  • APISIX源码解析-执行阶段【http_header_filter_phase、http_body_filter_phase、http_log_phase、http_balancer_phase】

    http header filter phase function M http header filter phase if ngx var ctx ref then prevent for the table leak local st
  • nodejs之时间、时间戳

    一共有5中方法 执行效率依次降低 Date now new Date getTime new Date process uptime process hrtime Date now new Date getTime 和 new Date 是
  • Array的reduce方法

    let arr 1 2 3 4 5 6 arr reduce function pre value index array console log pre value 结果如下 1 2 undefined 3 undefined 4 und