使用 Symbol 键遍历对象属性

Posted

技术标签:

【中文标题】使用 Symbol 键遍历对象属性【英文标题】:Iterate through object properties with Symbol keys 【发布时间】:2018-05-02 12:12:43 【问题描述】:

我需要遍历一个包含键符号的对象。以下代码返回一个空数组。

const FOO = Symbol('foo');
const BAR = Symbol('bar');

const obj = 
  [FOO]: 'foo',
  [BAR]: 'bar',


Object.values(obj)

如何迭代obj 中的值,以便得到['foo', 'bar']

【问题讨论】:

检查Object.getOwnPropertySymbols(obj) developer.mozilla.org/de/docs/Web/javascript/Reference/… 【参考方案1】:

您可以使用

遍历 Object 的所有键(字符串和符号键)
Reflect.ownKeys()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys

【讨论】:

【参考方案2】:

Object.values 只获取所有可枚举命名(字符串键)属性的值。

你需要使用Object.getOwnPropertySymbols:

console.log(Object.getOwnPropertySymbols(obj).map(s => obj[s]))

【讨论】:

以上是关于使用 Symbol 键遍历对象属性的主要内容,如果未能解决你的问题,请参考以下文章

6种遍历对象的方法

遍历器接口

JavaScript 对象属性的遍历

ES6之6种遍历对象属性的方法

ES6之6种遍历对象属性的方法

遍历对象的属性的方法