讲师中心 微信公众号
AI工具推荐 视频效率加速

JavaScript对象属性精确提取教程

雨瑶小哥_4675

雨瑶小哥_4675

发布时间:2025-11-30 14:46:21

|

339人浏览过

|

来源于php中文网

原创

JavaScript对象属性精确提取教程

本教程将详细介绍如何在javascript中从一个对象中精确提取出指定的属性,并生成一个新的对象。我们将利用`object.entries`、`filter`和`object.fromentries`这三个核心方法,并探讨如何处理以数组或字符串形式提供的待提取属性列表,从而高效、灵活地实现对象属性的筛选与重构。

在JavaScript开发中,我们经常需要从一个现有对象中选择性地提取部分属性,并将其组合成一个新的对象,而不是直接修改原始对象。这种操作在数据处理、API响应整形或组件状态管理等场景中尤为常见。本教程将指导您如何使用现代JavaScript的内置方法优雅地实现这一目标。

核心方法解析

实现对象属性精确提取的关键在于Object.entries()、Array.prototype.filter() 和 Object.fromEntries() 这三个方法的协同工作。

  1. Object.entries() 此方法用于将一个对象转换为一个由其自身可枚举字符串键属性的 [key, value] 对组成的数组。这是我们开始筛选的基础,因为它将对象的扁平结构转换为可迭代的数组结构。

    const someObject = { number: '1', month: 'march', year: '2023' };
    console.log(Object.entries(someObject));
    // 输出: [ ['number', '1'], ['month', 'march'], ['year', '2023'] ]
  2. Array.prototype.filter()filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。在这个场景中,我们将使用它来遍历 Object.entries() 返回的 [key, value] 对数组,并根据键名是否在我们指定的提取列表中来决定是否保留该对。

    const data = [['a', 1], ['b', 2], ['c', 3]];
    const filteredData = data.filter(([key, value]) => key === 'a' || key === 'c');
    console.log(filteredData);
    // 输出: [ ['a', 1], ['c', 3] ]
  3. Object.fromEntries() 此方法是 Object.entries() 的逆操作。它接收一个由 [key, value] 对组成的数组,并将其转换回一个新的对象。这是我们将筛选后的属性对重新组合成目标对象的最后一步。

    const filteredEntries = [['month', 'march'], ['year', '2023']];
    console.log(Object.fromEntries(filteredEntries));
    // 输出: { month: 'march', year: '2023' }

实现对象属性精确提取

现在,我们将上述三个方法结合起来,实现从源对象中提取指定属性的功能。

立即学习“Java免费学习笔记(深入)”;

场景一:待提取属性列表为数组

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载

假设我们有一个源对象 someObject 和一个包含要提取属性名称的数组 propertiesToExtract。

const someObject = { number: '1', month: 'march', year: '2023' };
const propertiesToExtract = ['month', 'year'];

// 1. 将对象转换为 [key, value] 对数组
const entries = Object.entries(someObject);

// 2. 过滤出我们需要的属性对
const filteredEntries = entries.filter(([key, value]) =>
  propertiesToExtract.includes(key)
);

// 3. 将过滤后的属性对转换回新对象
const finalObject = Object.fromEntries(filteredEntries);

console.log(finalObject);
// 预期输出: { month: 'march', year: '2023' }

您可以将上述步骤合并为一行简洁的代码:

const someObject = { number: '1', month: 'march', year: '2023' };
const propertiesToExtract = ['month', 'year'];

const finalObject = Object.fromEntries(
  Object.entries(someObject).filter(([key, value]) =>
    propertiesToExtract.includes(key)
  )
);

console.log(finalObject);
// 预期输出: { month: 'march', year: '2023' }

场景二:待提取属性列表为逗号分隔的字符串

如果待提取的属性列表是以逗号分隔的字符串形式提供,我们需要先将其转换为一个数组。这可以通过 String.prototype.split() 方法轻松实现。

const someObject = { number: '1', month: 'march', year: '2023' };
const propertiesAsString = 'month, year';

// 将字符串转换为数组,并去除可能存在的空格
const propertiesToExtract = propertiesAsString
  .split(',')
  .map((prop) => prop.trim());

const finalObject = Object.fromEntries(
  Object.entries(someObject).filter(([key, value]) =>
    propertiesToExtract.includes(key)
  )
);

console.log(finalObject);
// 预期输出: { month: 'march', year: '2023' }

注意事项

  • 不可变性 (Immutability):上述方法会创建一个全新的对象 finalObject,而不会修改原始的 someObject。这符合函数式编程的原则,有助于避免副作用,使代码更易于理解和维护。
  • 性能考量:对于包含大量属性(例如数万个)的巨大对象,这种方法会涉及对象的遍历、数组的创建和过滤,可能会有轻微的性能开销。但在大多数常规应用场景中,这种开销可以忽略不计。
  • 属性存在性:如果 propertiesToExtract 数组中包含源对象中不存在的属性,filter 方法会自动忽略这些不存在的键,不会导致错误,也不会在 finalObject 中创建这些属性。
  • 键的类型:Object.entries() 和 Object.fromEntries() 主要处理字符串键。如果您的对象包含 Symbol 类型的键,它们将不会被 Object.entries() 捕获。

总结

通过结合使用 Object.entries()、Array.prototype.filter() 和 Object.fromEntries(),我们能够以一种声明式、高效且不可变的方式,从JavaScript对象中精确提取出所需的属性。这种模式不仅强大灵活,而且代码简洁易读,是处理对象属性筛选和重构的推荐方法。无论是处理简单的数组列表还是需要预处理的字符串列表,这种技术都能提供一个优雅的解决方案。

热门AI工具

更多
LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5239

2023.08.02

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1558

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2244

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5764

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

4869

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

6594

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

8854

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

4499

2025.07.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

60

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn