我想知道是否有一种很好的方式来获得符号的描述。
例如,
var s = Symbol(5);
toString的默认实现只会打印 符号(5)
我想找到一种方法来提取实际的描述,即5
答案 0 :(得分:3)
String(symbol).slice(7, -1) || null
这是有效的,因为String(symbol)
明确地将符号强制转换为字符串,例如Symbol('test')
被强制导入"Symbol(test)"
。
在from 7到-1之间进行拼接会在两个括号之间进行拼接,从而捕获描述test
注意:这可能不适用于对象描述(例如Symbol({test})
),因为对象被强制转换为"[object Object]"
答案 1 :(得分:3)
var array = Object.entries(students).map(([key, student ]) =>
({
Name: student.replace(/_/g, " "),
Id: key,
Value: student
})
返回符号说明。
只需对您的情况进行s.description。
答案 2 :(得分:0)
没有简洁的方法来做到这一点。但是,如果您在全局注册表中注册了符号,则可以使用Symbol.keyFor()
:
var s = Symbol.for(5);
console.log(Symbol.keyFor(s));
答案 3 :(得分:-2)
symbol-description
包
返回提供的符号的描述:
const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo
在我阅读this answer here后,我刚刚发表了这篇文章。