使用 map 和 reduce 提取对象数组中的 id 并组成新数组
在开发过程中,经常需要对 API 返回的数据进行处理,例如从对象数组中提取某些字段,并将它们组成新的数组。这里我们将介绍如何通过 JavaScript 的 map
和 reduce
方法来完成这一需求,并深入比较这两者的用法与适用场景。
需求:提取 id
字段组成新数组
假设我们有如下数据结构:
const res = {data: [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 3, name: 'Charlie' }]
}
我们的目标是从 res.data
中提取每个对象的 id
字段,将它们组成一个新的数组,最终得到结果:
[1, 2, 3]
使用 map
实现需求
map
方法用于遍历数组中的每个元素,并对每个元素执行相同的操作,生成一个新数组。它的典型应用场景是逐个处理元素,创建新数组。
代码示例
const ids = res.data.map(item => item.id)
console.log(ids) // 输出: [1, 2, 3]
解析
map
方法会遍历res.data
中的每个对象。- 每次遍历时,
item => item.id
会将对象的id
提取出来,形成一个包含id
的新数组。
优点
- 简洁明了,代码可读性高。
- 专为创建新数组而设计,适用于提取、格式化或转换数组的场景。
使用 reduce
实现需求
reduce
方法用于对数组执行累积操作,它可以生成一个最终的单一值(可以是数组、对象等)。它常用于聚合数据或进行复杂的数据处理。
代码示例
const ids = res.data.reduce((accumulator, item) => {accumulator.push(item.id) // 将id推入累积数组return accumulator // 返回更新后的累积数组
}, []) // 初始化累积值为空数组 []console.log(ids) // 输出: [1, 2, 3]
解析
reduce
初始化一个空数组[]
作为accumulator
的初始值。- 在每次遍历中,将当前元素的
id
推入到accumulator
数组中。 - 最终
reduce
返回的accumulator
数组即为目标数组[1, 2, 3]
。
优点
- 灵活性高,支持更复杂的聚合操作。
- 适用于需要累计或合并数据的情况。
相关文章:
使用 map 和 reduce 提取对象数组中的 id 并组成新数组
在开发过程中,经常需要对 API 返回的数据进行处理,例如从对象数组中提取某些字段,并将它们组成新的数组。这里我们将介绍如何通过 JavaScript 的 map 和 reduce 方法来完成这一需求,并深入比较这两者的用法与适用场景。 需求&…...

Zero-Shot Relational Learning for Multimodal Knowledge Graphs
摘要 关系学习是知识表示领域,特别是知识图补全(KGC)领域的一项重要任务。虽然传统单模态环境下的关系学习已经得到了广泛的研究,但在多模态KGC环境下探索关系学习提出了不同的挑战和机遇。其中一个主要挑战是在没有任何相关训练…...

AUTOSAR COM 模块的主要功能导读以及示例
AUTOSAR COM 模块的主要功能 AUTOSAR COM 模块在车载系统中用于管理通信的中间层,主要功能包括: 信号传输与接收: • 提供信号打包和解包功能,将信号数据打包成协议数据单元(I-PDU)以便传输,或从接收到的…...

VMware下Centos7虚拟机数据盘/data目录(非lvm)不停机热扩容实操
实操环境 VMware:7.0 虚拟机:Centos7 (TEST-K8S-Node01) 扩容目录:/data (20G>>30G) 前置操作 注意事项:如果有条件的话,建议先做个主机的全量备份(…...

易盾增强版滑块识别/易盾识别/滑块识别/增强版滑块识别/易盾滑块本地识别
易盾增强版滑块识别 计算思路如下: 滑动条拖动距离传入 restrict 算法处理得到 初次值 J J * 率值0.309375 得到滑块偏移量。 滑块的旋转角度滑块偏移量*attrs 所以滑块偏移量滑块的旋转角度/attrs 通过滑块偏移量 求出 滑动条拖动距离 # 应用高斯模糊warped_…...

DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络
DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络 Liu, Diju, et al. “Data mode related interpretable transformer network for predictive modeling and key sample analysis in industrial processes.” IEEE Transactions on Indust…...

向量模型Jina Embedding: 从v1到v3论文笔记
文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相…...

Spring学习笔记(一)
一 、Spring概述 (一)Spring是什么 Spring是一个分层的Java SE/EE full-stack(一站式)轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面…...
Java编程基础
Java是一种广泛使用的编程语言,以其跨平台兼容性、面向对象的特性和健壮的安全性而闻名。本篇文章将带你了解Java编程的基础知识。 Java简介 Java是由Sun Microsystems(现在是Oracle Corporation的一部分)在1995年发布的。它是一种静态类型…...

C++【string类,模拟实现string类】
🌟个人主页:落叶 🌟当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…...

Jupyter lab 打开时默认使用 Notebook 而不是浏览器
Jupyter lab 打开时默认使用 Notebook 而不是浏览器 正文 正文 今天遇到了一个特别有意思的事情,这里我们以 Windows \textrm{Windows} Windows 系统举例。 我们知道通常我们需要使用如下代码在 Terminal \textrm{Terminal} Terminal 中打开 Jupyter lab \textr…...
【linux】ubunda repo是什么
Ubuntu repo(repository,简称repo)是一个软件仓库,它是存储和分发软件包的服务器或一组服务器。通俗地说,Ubuntu repo就像一个巨大的在线软件商店,用户可以从中下载和安装各种软件。 主要特点 软件集合&a…...

【MySQL】深层理解索引及特性(重点)--下(12)
索引(重点) 1. 索引的作用2. 索引操作2.1 主键索引2.1.1 主键索引的特点2.1.2 创建主键索引 2.2 唯一键索引2.2.1 唯一键索引的特点2.2.2 唯一索引的创建 2.3 普通索引2.3.1 普通索引的特点2.3.2 普通索引的创建 2.4 全文索引2.4.1 全文索引的作用2.4.2 …...

无人机声学侦测算法详解!
一、算法原理 无人机在飞行过程中,其电机工作、旋翼震动以及气流扰动等都会产生一定程度的噪声。这些噪声具有独特的声学特征,如频率范围、时域和频域特性等,可以用于无人机的检测与识别。声学侦测算法利用这些特征,通过一系列步…...
git 提交仓库
创建 git 仓库: mkdir pySoundImage cd pySoundImage git init touch README.md git add README.md git commit -m “first commit” git remote add origin https://gitee.com/hunan-co-changsha-branch/pytest.git git push -u origin master 已有仓库ÿ…...

基于大语言模型(LLM)自主Agent 智能体综述
近年来,LLM(Large Language Model)取得了显著成功,并显示出了达到人类智能的巨大潜力。基于这种能力,使用LLM作为中央控制器来构建自助Agent,以获得类人决策能力。 Autonomous agents 又被称为智能体、Agent。指能够通过感知周围环境、进行规划以及执行动作来完成既定任务。…...
使用命令行管理 Windows 环境变量
1. 使用命令提示符 (CMD) 1.1. 设置环境变量 添加或修改临时环境变量(当前会话有效) set MY_VARvalue添加或修改用户环境变量 setx MY_VAR "value"添加或修改系统环境变量(需要管理员权限): setx /M MY…...

AUTODL配置百度网盘数据传输
AUTODL使用 1.配置百度网盘开放平台 2.接入并创建应用 3.创建应用 4.添加授权...
LeetCode46. 全排列(2024秋季每日一题 57)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums …...

SpringBoot新闻稿件管理系统:架构与实现
3系统分析 3.1可行性分析 通过对本新闻稿件管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本新闻稿件管理系统采用SSM框架,JAVA作为开发语…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...