当前位置: 首页 > 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 的方法可能更合适。

相关文章:

  • Java项目—— 拼图小游戏(进阶版)
  • PowerBi中的Measure(度量值)如何理解和应用?
  • 数字化转型浪潮下,B端产品如何助力企业乘风破浪?
  • Android studio—socketIO库的emit与return的使用
  • JVM对象创建全过程
  • .net core 项目快速接入Coze智能体-开箱即用-第2节
  • langgraph框架之初识
  • AI 编程工具—如何在 Cursor 中集成使用 MCP工具
  • Banana Pi BPI-RV2 RISC-V 路由器开发板发售, 全球首款RISC-V路由器
  • STM32单片机入门学习——第41节: [12-1] Unix时间戳
  • SpringAI入门:对话机器人
  • docker 镜像
  • MySQL中高级语法
  • 解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)
  • polkitd服务无法启动导致docker无法启动问题解决
  • 海关总署广东:广东外贸一季度进出口2.14万亿元 同期增长4.2%
  • 2.2/Q2,Charls最新文章解读
  • 【Python爬虫基础篇】--2.模块解析
  • 07_Docker 资源限制
  • Jenkins的使用及Pipeline语法讲解
  • 申活观察|咖香涌动北外滩,带来哪些消费新想象?
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 韩国检方结束对尹锡悦私宅的扣押搜查
  • 中方拟解除对5名欧洲议会议员制裁?外交部:望中欧立法机构相向而行
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴
  • 兴业银行一季度净赚超237亿降逾2%,营收降逾3%