
本文详细介绍了在J*aScript中,如何利用`Object.entries()`、`Array.prototype.filter()`和`Object.fromEntries()`这三个现代J*aScript特性,从一个现有对象中高效且优雅地提取出指定的一组属性,生成一个新的对象。文章涵盖了从准备待提取属性列表到最终生成目标对象的完整流程,并提供了清晰的代码示例及使用注意事项。
在J*aScript开发中,我们经常需要从一个包含多个属性的对象中,只挑选出其中一部分属性来创建一个新的对象。这种场景在处理API响应、配置对象或数据转换时尤为常见。本文将介绍一种简洁且符合现代J*aScript风格的方法来实现这一目标。
实现对象属性提取的关键在于以下三个J*aScript内置方法的组合使用:
通过这三个方法的协同工作,我们可以将对象的属性列表化,筛选出目标属性,然后再重新组装成一个新的对象。
假设我们有一个源对象 someObject,以及一个包含我们希望提取的属性名的列表 propertiesToExtract。

首先,我们需要确保待提取的属性列表是一个数组。如果它最初是一个以逗号分隔的字符串,我们需要将其转换为数组。
const someObject = { number: '1', month: 'march', year: '2025', day: '15' };
// 情况一:属性列表已经是数组
const propertiesToExtractArray = ['month', 'year'];
// 情况二:属性列表是字符串,需要转换为数组
const propertiesToExtractString = 'month, year';
const propertiesToExtractFromString = propertiesToExtractString.split(', ');
console.log(propertiesToExtractFromString); // 输出: ['month', 'year']在实际应用中,通常会统一将输入处理为数组形式,以确保后续逻辑的一致性。
ChatGPT Writer
免费 Chrome 扩展程序,使用 ChatGPT AI 生成电子邮件和消息。
106
查看详情
使用 Object.entries() 方法将源对象转换为一个包含所有键值对的数组。
const entries = Object.entries(someObject); console.log(entries); // 输出: [ // ['number', '1'], // ['month', 'march'], // ['year', '2025'], // ['day', '15'] // ]
接下来,使用 filter() 方法遍历 entries 数组,只保留那些键名存在于 propertiesToExtract 列表中的键值对。
const filteredEntries = entries.filter(([key, value]) => propertiesToExtractArray.includes(key)); console.log(filteredEntries); // 输出: [ // ['month', 'march'], // ['year', '2025'] // ]
这里,([key, value]) 是数组解构赋值,方便我们直接访问当前迭代的键和值。propertiesToExtractArray.includes(key) 则判断当前键是否在我们预期的列表中。
最后,使用 Object.fromEntries() 方法将过滤后的键值对数组转换回一个新的对象。
const finalObject = Object.fromEntries(filteredEntries);
console.log(finalObject); // 输出: { month: 'march', year: '2025' }将上述步骤整合在一起,我们可以得到一个简洁高效的解决方案:
/**
* 从源对象中提取指定属性,生成一个新对象。
* @param {object} sourceObject - 源对象。
* @param {string[]|string} propertiesToExtract - 待提取的属性名列表,可以是数组或逗号分隔的字符串。
* @returns {object} 包含指定属性的新对象。
*/
function extractProperties(sourceObject, propertiesToExtract) {
let keysToExtract;
// 确保待提取属性列表是数组
if (typeof propertiesToExtract === 'string') {
keysToExtract = propertiesToExtract.split(', ').map(key => key.trim());
} else if (Array.isArray(propertiesToExtract)) {
keysToExtract = propertiesToExtract;
} else {
console.warn("propertiesToExtract 参数类型不正确,应为字符串或数组。");
return {};
}
// 使用 Object.entries, filter 和 Object.fromEntries 组合操作
const finalObject = Object.fromEntries(
Object.entries(sourceObject).filter(([key, value]) =>
keysToExtract.includes(key)
)
);
return finalObject;
}
// 示例用法
const someObject = { number: '1', month: 'march', year: '2025', day: '15' };
// 提取 'month' 和 'year'
const result1 = extractProperties(someObject, ['month', 'year']);
console.log('提取数组属性:', result1); // 输出: { month: 'march', year: '2025' }
// 提取 'number' 和 'day' (使用字符串形式)
const result2 = extractProperties(someObject, 'number, day');
console.log('提取字符串属性:', result2); // 输出: { number: '1', day: '15' }
// 提取不存在的属性
const result3 = extractProperties(someObject, ['foo', 'bar']);
console.log('提取不存在属性:', result3); // 输出: {}
// 提取所有属性 (通过将所有key都包含在列表中实现)
const allKeys = Object.keys(someObject);
const result4 = extractProperties(someObject, allKeys);
console.log('提取所有属性:', result4); // 输出: { number: '1', month: 'march', year: '2025', day: '15' }利用 Object.entries()、Array.prototype.filter() 和 Object.fromEntries() 的组合,我们可以在J*aScript中以一种声明式、高效且易读的方式从对象中提取指定属性。这种模式是现代J*aScript开发中处理对象属性的推荐实践,它不仅提升了代码的简洁性,也遵循了不可变性原则,使得数据操作更加安全可靠。掌握这一技巧,将有助于你编写出更健壮、更优雅的J*aScript代码。
以上就是J*aScript中如何高效提取对象指定属性的详细内容,更多请关注其它相关文章!
# java
# js
# javascript
# 创建一个
# 网站建设全包沙发推荐
# 遍历
# 象中
# 弹出
# 肥西医院招聘seo
# 做问答营销推广能赚钱吗
# 集团网站建设讯息
# 沙井网站推广服务商
# 北京网站建设如何
# 嘉定区一站式营销推广
# 全网热门关键词排名软件
# 刷关键词排名推荐g火10星
# 优化企业网站设计制作
# 加载
# 是一个
# 表单
# 我们可以
# 转换为
# 键值
# javascrip
# 键值对
# 前端开发
# 工具
# 浏览器
# node
# node.js
# 前端
相关文章:
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
机器学习中对数变换预测结果的反向还原
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
漫蛙漫画登录站点 漫蛙2正版漫画快速访问
漫蛙官网正版漫画入口 漫蛙2官方网页登录地址
J*aScript中localStorage数据的获取、清洗与格式化教程
利用Bokeh CustomJS动态控制DataTable列可见性
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
Go Martini框架:动态服务解码后的图片内容
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
cad如何更改注释性对象的比例_cad注释性比例调整方法
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
WordPress插件开发:正确注册卸载钩子与避免常见陷阱
谷歌google账号注册详细步骤 谷歌账号注册官方教程
漫蛙2正版漫画站 漫蛙2网页版快速访问入口
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
修复二维数组索引越界异常:一维循环到二维坐标的正确映射
腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件
C++如何实现单例模式_C++设计模式之线程安全的单例写法
照顾宝贝2小游戏点击立即在线玩
怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】
mc.js官网登录入口 mc.js官方登录入口最新版
React Hooks最佳实践:动态组件状态管理的组件化方案
“音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!
深入理解与实现最大堆的Heapify过程:常见错误与修正
c++20的std::jthread是什么_c++可中断线程与RAII式管理
一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践
UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS
Fabric模组开发:自定义物品与物品组的现代管理方法
微信客户端如何收红包_微信客户端接收红包使用教程
如何使用纯J*aScript判断Input元素是否在特定类容器内
qq游戏跨平台入口_qq游戏多设备同步登录
JUnit5/Mockito:优雅测试内部依赖与异常处理的实践
J*aScript:在map操作中高效处理空数组
如何在PHP中实现基于MySQL的动态分页查询
J*aScript数据结构转换:将对象数组按类别分组
在python-socketio事件处理器中安全访问Flask应用上下文
必由学官网入口 必由学教师登录入口
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
快手官方唯一登录入口 谨防山寨钓鱼网站
抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站
*请认真填写需求信息,我们会在24小时内与您取得联系。