当我运行以下代码
时var obj = { 0: 'a', 1: 'b', 2: 'c' };
typeof Object.keys(obj)[0] //returns string
在obj
对象中创建数字键。
任何原因,为什么它的字符串而不是number
?
答案 0 :(得分:17)
键类型始终。如果您需要数字,则必须手动投射:
var obj = { 0: 'a', 1: 'b', 2: 'c' };
var ids = Object.keys(obj).map(Number);
console.log(ids);

答案 1 :(得分:10)
因为Object.keys返回带字符串的数组
Object.keys()
返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串。属性的顺序与通过手动循环对象的属性给出的顺序相同。
你得到一个字符串数组,因为根据定义Property names是字符串。
属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都通过
toString
方法被拼接成字符串。
答案 2 :(得分:2)
根据文档 Object.keys() 返回字符串数组
Object.keys()返回一个数组,其元素为 strings ,对应于直接在对象上找到的可枚举属性。属性的顺序与通过手动循环对象的属性给出的顺序相同。( Taken from here )
如果您想将其转换为数字数组,请使用 map()
var obj = {
0: 'a',
1: 'b',
2: 'c'
};
console.log(typeof Object.keys(obj).map(Number)[0])
答案 3 :(得分:2)
Javascript对象没有数字键!所有键都是字符串。总是
如果您想将其他内容映射到值,请使用Map
。
答案 4 :(得分:0)
var obj = {
0: 'a',
1: 'b',
2: 'c'
};
console.log(typeof Object.keys(obj).map(Number)[0])