当前位置: 首页 > news >正文

ES6 Object.values 特定字段处理

上篇文章,介绍了ES6  Object处理对象的常用的处理方法,小伙伴可以参考:ES6 Object.keys()、Object.values()、 和 Object.entries() 区别-CSDN博客

在JavaScript中,Object.values() 方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与通过循环(例如,使用 for...in)遍历它们时的一致。如果想要从对象中提取特定字段的值,而不是所有值,你可以使用几种不同的方法来实现这一点。 

 基础示例:

const obj = {a: 1,b: 2,c: 3,d: 4
};const values = Object.values(obj);
console.log(values); // 输出: [1, 2, 3, 4]

 进阶

1、使用 Object.values() 结合数组的 map 方法

如果你想要获取特定字段的值,可以先使用 Object.values() 获取所有值,然后通过 map 方法过滤出你需要的字段值。

const obj = {name: "Aotman_",age: 25,city: "Hang Zhou"
};// 假设我们只对 'name' 和 'city' 字段感兴趣
const specificValues = Object.values(obj).map(value => ({ value }));
console.log(specificValues); // 输出: [{ value: 'Aotman_' }, { value: 'Hang Zhou' }]// 如果你想要一个简单的数组
const simpleArray = specificValues.map(item => item.value);
console.log(simpleArray); // 输出: ['Aotman_', 'Hang Zhou']

2、使用 Object.entries() 和数组的 filter 方法 

使用 Object.entries() 来获取键值对数组,然后使用 filter 方法来筛选出你需要的字段。 

const obj = {name: "Aotman_",age: 25,city: "Hang Zhou"
};// 获取特定字段的值
const filteredValues = Object.entries(obj).filter(([key]) => ['name', 'city'].includes(key)) // 只保留 'name' 和 'city' 的键值对.map(([key, value]) => value); // 只取值console.log(filteredValues); // 输出: ['Aotman_', 'Hang Zhou']

3、直接访问对象属性(适用于已知字段)

 如果知道要提取哪些字段,可以直接通过属性访问来获取这些字段的值。

const obj = {name: "Aotman_",age: 25,city: "Hang Zhou"
};const { name, city } = obj; // ES6 解构赋值
console.log(name, city); // 输出: Alice Hang Zhou

 或者作为一个数组:

 

const specificValues = [obj.name, obj.city];
console.log(specificValues); // 输出: ['Aotman_', 'Hang Zhou']

4、使用 reduce 方法

可以使用 reduce 方法来收集特定字段的值。 

const obj = {name: "Aotman_",age: 25,city: "Hang Zhou"
};const specificValues = Object.keys(obj) // 获取所有键名.filter(key => ['name', 'city'].includes(key)) // 筛选出特定键名.reduce((acc, key) => {acc.push(obj[key]); // 根据键名获取值并加入结果数组return acc;}, []); // 初始化空数组作为累加器console.log(specificValues); // 输出: ['Aotman_', 'Hang Zhou']

总结

以上方法可以根据具体需求选择使用。如果只需要几个特定的字段,直接通过属性访问或者使用 reduce 方法可能是最直接和高效的方式。如果需要更灵活的处理(例如,基于某些条件选择字段),那么使用 filter 或结合 map 的方法可能更合适。

http://www.xdnf.cn/news/15985.html

相关文章:

  • IntelliJ IDEA clean git password
  • 每日一题(小白)暴力娱乐篇33
  • ObjectOutputStream 深度解析
  • 关于RK3588cpu多线程速度慢的问题
  • vLLM V1:性能优化与集群扩展的深度解析
  • LabVIEW 项目开发:需求引导与系统统筹
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_自定义单元格大小示例(CalendarView01_07)
  • 基于CNN与VGG16的图像识别快速实现指南
  • 职坐标IT培训热门技术实战精讲
  • 跟我学C++中级篇——内存异常的分析
  • 在排序数组中查找元素的第一个和最后一个位置--LeetCode
  • 【SAP ME 43】RESRCE表操作导致HANA中表锁定解决方案
  • Netlink套接字
  • 基于微信小程序的中医小妙招系统的设计与实现
  • 使用dompurify修复XSS跨站脚本缺陷
  • k8s 调整Node节点 Max_Pods
  • dify本地部署,docker-plugin_daemon-1启动不了,一直报错
  • rtps报文分析
  • 2025年消防设施操作员考试题库及答案
  • Windows 11设置开机自动运行 .jar 文件
  • 实战篇|多总线网关搭建与量产验证(5000 字深度指南)
  • 第五章、SpringBoot与消息通信(一)
  • useMemo + memo + useContext 性能优化实战:从无感重渲染到丝滑体验
  • 深入理解 Android Handler
  • Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5
  • STM32F407的引脚说明
  • ActivityRecord、TaskRecord、ActivityStack、ActivityStackSupervisor、ProcessRecord
  • 【工具】在Cursor/VS Code中配置Python调试环境的完整指南
  • VASP 6.4.1 Ubuntu系统编译安装手册
  • STM32学习2