学习一下Array.reduce函数的使用

news/2024/9/28 23:04:52/文章来源:https://www.cnblogs.com/yaoyu7/p/18438408

今天面试遇到一个问题,如下:

实现一个函数,把 [{ name: "Alice", age: 10 }, { name: "Bob", age: 20 }] 转换成 { Alice: 10, Bob: 20 }

然后我用for循环加Object.values的方法实现了,面试这时候问,能不能用reduce实现?答,当然是可以的,可惜我对reduce使用的并不熟练,现在来学习一下。

 

下面是MDN给出的定义:

reduce方法对数组中的每个元素按按顺序执行一个提供的reducer函数,每一次运行reducer函数会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个元素返回。

它的第一个参数是一个函数,第二个参数是初始值。如果不传入第二个参数,那么数组索引为0的元素将被作为初始值,迭代器将从第二个元素开始执行。

reducer可以理解为“归约”:在计算机科学和编程中,特别是在函数式编程里,reducer 是一种特定类型的函数,它用于将集合中的元素通过某种操作累积起来得到一个单一的结果。这个过程通常称为“归约”(reduce)

 

 下面是面试题的答案

function transformArrayToObject(arr) {return arr.reduce((accumulator, currentValue) => {// 使用当前元素的name作为键,age作为值添加到累加器对象中accumulator[currentValue.name] = currentValue.age;return accumulator;}, {});  // 初始值为一个空对象
}// 测试数据
const array = [{ name: "Alice", age: 10 },{ name: "Bob", age: 20 }
];// 调用函数并打印结果
const result = transformArrayToObject(array);
console.log(result);  // 输出: { Alice: 10, Bob: 20 }

 

使用场景1:数组求和

const array1 = [1, 2, 3, 4];// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue,initialValue,
);console.log(sumWithInitial);
// Expected output: 10

 

 使用场景2:展开嵌套数组

const flattened = [[1, 2], [3, 4], [5, 6]].reduce((accumulator, currentValue) => accumulator.concat(currentValue), [])

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/805439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PbootCMS后台访问地址及默认帐号密码

如果你在使用PbootCMS时遇到关于后台默认账号密码的问题,以下是一些关键信息: PbootCMS 后台默认访问路径访问路径:你的域名/admin.php将“你的域名”替换为实际的网址。后台初始账号密码初始账号:admin 初始密码:admin示例 假设你的域名为 example.com,则后台访问路径为…

docker 创建私有仓库,并且设置用户名和密码

1. 拉取仓库 docker pull registry2. 安装密码生成工具 sudo apt-get install apache2-utils3. 生成用户名和密码 htpasswd -Bc /etc/docker/registry/passwords dzq4. 启动仓库docker run -d -p 5000:5000 --restart=always --name registry \-e REGISTRY_AUTH=htpasswd…

PbootCMS简单安装教程 – pbootcms基本使用教程

为了帮助用户顺利安装并使用PbootCMS系统,以下是详细的安装步骤和注意事项: 1. 环境要求PHP版本:PbootCMS系统默认采用SQLite数据库,需要PHP 5.4及以上版本,最新系统需要PHP 7.0及以上版本。 服务器环境:确保服务器环境正确配置,使用PHP环境。2. 安装前的准备环境配置:…

pbootcms目录结构解释说明及权限设置

为了确保PbootCMS能够正常运行,需要对一些关键目录设置正确的权限。以下是具体的目录权限设置说明: 1. 数据库目录 (data) 可写路径:/data 权限:755 或 777 命令:bashchmod 755 /path/to/pbootcms/data2. 运行时目录 (runtime) 及子目录可写路径:/runtime 权限:755 或 7…

pbootcms二次开发必须要了解的后台目录结构

下面是PbootCMS后台目录结构的整理表格,方便二次开发人员参考:目录 描述apps 应用目录 admin 后台应用 api API接口应用 common 公共目录 home 前台应用config 配置目录 config.php 系统配置文件 database.php 数据库配置文件 route.php 自定义路由配置…

pbootcms模板 后台升级程序后导致网站打不开 Parse error: syntax error, unexpec

当你在升级PbootCMS模板后台后遇到网站打不开的问题,并且出现如下错误: Parse error: syntax error, unexpected :, expecting { in /www/wwwroot/****/core/function/helper.php on line 745这通常是因为PHP版本不兼容导致的。PbootCMS 3.2版本要求PHP 7及以上版本。以下是具…

小模型(SLM)的效率、性能和潜力

关于小语言模型 小语言模型(slm)是为在桌面、智能手机和可穿戴设备上进行资源高效部署而设计的。 其目标是使先进的机器智能能够为每个人所使用和负担得起,就像人类认知的普遍性一样。 小语言模型(slm)已经广泛集成到商业设备中。例如,最新的谷歌和三星智能手机内置了大型语言…

PbootCMS上传的缩略图为什么变模糊尺寸还变小了了?

如果你在使用PbootCMS后台发布内容时,发现上传的缩略图在上传成功后变得模糊且尺寸变小,这通常是由于PbootCMS默认的图片尺寸限制导致的。以下是如何解决这个问题的具体步骤: 解决方案打开配置文件打开config目录下的config.php文件。修改缩略图配置在config.php文件中找到缩…

2024.9.23 cj 训练总结

T1这道题目仔细观察就会发现:异或 k=1这就很好办,考虑 k=1 怎么解 3 1 2 4 5 6 7.......... 即可。 异或,找规律发现有很多数字的异或值为0的。最后的答案是有规律的。 不知道什么问题,场上就70分。 T2这道题目基本上没啥思路,就是弄了个桶10分。 正解: 由于这个题目的字…

2024.9.23 - 2024.9.28 cj 训练总结

T1这道题目仔细观察就会发现:异或 k=1这就很好办,考虑 k=1 怎么解 3 1 2 4 5 6 7.......... 即可。 异或,找规律发现有很多数字的异或值为0的。最后的答案是有规律的。 不知道什么问题,场上就70分。 T2这道题目基本上没啥思路,就是弄了个桶10分。 正解: 由于这个题目的字…

结对项目:自动生成小学四则运算题目的命令行程序

这个作业属于哪个课程 计科22级12班这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13221姓名 学号曾繁曦 3122004841吴健民 3122004667PSP表格一、流程图二、模块设计 1.模块划分Main模块(Main.java) 功能描述:程序的入口点,负责接收命令…

作业三:结对项目

结对项目 一、作业介绍这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 完成小学四则运算题目的命令行程序,熟悉项目开发流程,提高团队合作能力二、成员信息代码仓库 GitHub成员1 杨智雄-3122004409成员2 陈愉锋-3122004387三、效能分析 各…