Javascript Object.keys() Object.values() 用法详解

举报
林欣 发表于 2024/11/15 11:45:07 2024/11/15
【摘要】 Object.keys()定义:Object.keys() 是一个JavaScript内置函数,用于返回一个由对象自身的(不包括原型链上的)所有可枚举属性组成的数组。数组中属性名的排列顺序与通过手动循环对象属性时的顺序一致。使用场景:当需要遍历对象的可枚举属性时,可以使用 Object.keys() 获取属性名数组,然后进行遍历。在处理对象时,如果需要获取对象的所有键(属性名),可以使用 ...

Object.keys()

定义
Object.keys() 是一个JavaScript内置函数,用于返回一个由对象自身的(不包括原型链上的)所有可枚举属性组成的数组。数组中属性名的排列顺序与通过手动循环对象属性时的顺序一致。

使用场景

  1. 当需要遍历对象的可枚举属性时,可以使用 Object.keys() 获取属性名数组,然后进行遍历。
  2. 在处理对象时,如果需要获取对象的所有键(属性名),可以使用 Object.keys()。
  3. 在需要判断对象是否包含某个属性时,可以先使用 Object.keys() 获取属性名数组,然后检查数组中是否包含该属性名。

用法详解

// 示例对象
const person = {
  name: "张三",
  age: 25,
  sex: "男",
  getName: function() {}
};

// 使用 Object.keys() 获取对象的所有可枚举属性名
const keys = Object.keys(person);
console.log(keys); // 输出: ["name", "age", "sex", "getName"]

// 遍历对象的所有可枚举属性
keys.forEach(key => {
  console.log(`${key}: ${person[key]}`);
});

对于数组和字符串,Object.keys() 会返回其索引值组成的数组。

// 示例数组
const arr = [1, 2, 3, 4, 5];
console.log(Object.keys(arr)); // 输出: ["0", "1", "2", "3", "4"]

// 示例字符串
const str = "javascript";
console.log(Object.keys(str)); // 输出: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]

Object.values()

定义
Object.values() 方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用 for…in 循环的顺序相同(区别在于 for-in 循环枚举原型链中的属性,而 Object.values() 不包括原型链上的属性)。

使用场景

  1. 当需要获取对象的所有值时,可以使用 Object.values()。
  2. 在处理对象时,如果需要遍历对象的所有值,可以先使用 Object.values() 获取值数组,然后进行遍历。
  3. 在需要将对象的值转换为数组进行进一步处理时,可以使用 Object.values()。

用法详解

// 示例对象
const obj = {
  passport: '护照',
  mobile: '手机号',
  phone: '固定电话',
  email: '电子邮箱'
};

// 使用 Object.values() 获取对象的所有可枚举属性值
const values = Object.values(obj);
console.log(values); // 输出: ["护照", "手机号", "固定电话", "电子邮箱"]

// 遍历对象的所有可枚举属性值
values.forEach(value => {
  console.log(value);
});

对于数组,Object.values() 会返回其顺序成员组成的数组。

// 示例数组
const arr = ['x', 'y', 'z'];
console.log(Object.values(arr)); // 输出: ["x", "y", "z"]

总结

  • Object.keys() 用于获取对象的所有可枚举属性名组成的数组。
  • Object.values() 用于获取对象的所有可枚举属性值组成的数组。
  • 两者都不包括原型链上的属性。
  • 在处理对象、数组和字符串时,这两个方法都非常有用。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。