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 的方法可能更合适。

相关推荐
a濯5 小时前
element plus el-table多选框跨页多选保留
javascript·vue.js
蓝婷儿5 小时前
前端面试每日三题 - Day 32
前端·面试·职场和发展
星空寻流年6 小时前
CSS3(BFC)
前端·microsoft·css3
九月TTS6 小时前
开源分享:TTS-Web-Vue系列:Vue3实现固定顶部与吸顶模式组件
前端·vue.js·开源
H309196 小时前
vue3+dhtmlx-gantt实现甘特图展示
android·javascript·甘特图
CodeCraft Studio6 小时前
数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
前端·javascript·ui·甘特图
一把年纪学编程6 小时前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
llc的足迹6 小时前
el-menu 折叠后小箭头不会消失
前端·javascript·vue.js
九月TTS7 小时前
TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
前端·javascript·vue.js
Johnstons7 小时前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析