object.values()用于提取对象自身可枚举属性的值并返回数组,只遍历自有、enumerable为true的属性,不包含原型链和不可枚举属性,对null/undefined抛typeerror,数字键自动升序排序。

Object.values() 是 JavaScript 内置方法,用于直接提取对象自身可枚举属性的值,返回一个数组。
基本用法:获取所有可枚举属性值
它只遍历对象**自身、可枚举(enumerable: true)的属性**,不包括原型链上的属性,也不包括不可枚举属性(如通过 Object.defineProperty 添加且 enumerable: false 的属性)。
- 语法简单:
Object.values(obj) - 返回值是数组,顺序与
for...in遍历一致(即按属性定义顺序,数字键会自动排序) - 对 null 或 undefined 报错,需确保传入的是对象
常见使用示例
例如:
const user = { name: 'Alice', age: 30, city: 'Beijing' };
console.log(Object.values(user)); // ['Alice', 30, 'Beijing']
const data = { 100: 'a', 2: 'b', 1: 'c' };
console.log(Object.values(data)); // ['c', 'b', 'a'] —— 数字键按升序排列
注意:字符串键和 symbol 键都正常保留原顺序;纯数字键会被排序后输出。
处理非对象参数和边界情况
如果传入原始值(如字符串、数字),会先尝试转为包装对象:
-
Object.values('hi')→['h', 'i'](字符串被转为类数组对象) -
Object.values(42)→[](数字没有自有可枚举属性) -
Object.values(null)或Object.values(undefined)→ 抛出 TypeError
安全写法建议加类型判断或 try-catch,尤其在不确定输入来源时。
与 Object.keys() 和 Object.entries() 的关系
三者配合使用很常见:
-
Object.keys(obj)→ 返回键名数组 -
Object.values(obj)→ 返回值数组 -
Object.entries(obj)→ 返回 [key, value] 数组,等价于Object.keys(obj).map(k => [k, obj[k]])
比如想同时拿到键和值做映射处理,Object.entries() 更直观;只需值时,Object.values() 更简洁直接。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











