为什么Object.keys返回的是字符串数组而不是Numbers数组

Jag*_*row 18 javascript

当我运行以下代码时

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方法被类型化为字符串.