当我运行以下代码时
var obj = { 0: 'a', 1: 'b', 2: 'c' };
typeof Object.keys(obj)[0] //returns string
Run Code Online (Sandbox Code Playgroud)
在obj对象我正在创建数字键.
任何原因,为什么它的字符串而不是number?
dfs*_*fsq 20
键始终为String类型.如果您需要数字,则必须手动投射:
var obj = { 0: 'a', 1: 'b', 2: 'c' };
var ids = Object.keys(obj).map(Number);
console.log(ids);Run Code Online (Sandbox Code Playgroud)
Nin*_*olz 12
因为Object.keys返回一个包含字符串的数组
Object.keys()返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串.属性的顺序与手动循环对象的属性所给出的顺序相同.
你得到一个字符串数组,因为属性名称是字符串的定义.
属性名称必须是字符串.这意味着非字符串对象不能用作对象中的键.任何非字符串对象(包括数字)都通过该
toString方法被类型化为字符串.