当前位置: 首页 > 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语法讲解
  • 揭晓!人形机器人半马完赛奖+专项奖发布
  • 亚太峰会上哪个词最火?我们问了问AI
  • 王毅、董军将主持召开中印尼外长防长“2+2”对话机制首次部长级会议
  • 美肯塔基州长警告:关税或致美家庭年增数千美元支出
  • 陈少洋出任中国航天科工集团党组副书记、董事、总经理
  • 武汉一超高层住宅顶楼违建成“不死小强”,相关部门回应