繁体   English   中英

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

[英]Why Object.keys is returns array of string instead of array of Numbers

当我运行以下代码时

var obj = { 0: 'a', 1: 'b', 2: 'c' };
typeof Object.keys(obj)[0] //returns string

obj对象中我正在创建数字键。

任何原因,为什么它的字符串而不是number

始终为String类型。 如果您需要数字,则必须手动投射:

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; var ids = Object.keys(obj).map(Number); console.log(ids); 

因为Object.keys返回一个包含字符串的数组

Object.keys()返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串。 属性的顺序与手动循环对象的属性所给出的顺序相同。

你得到一个字符串数组,因为属性名称是字符串的定义。

属性名称必须是字符串。 这意味着非字符串对象不能用作对象中的键。 任何非字符串对象(包括数字)都通过toString方法进行类型转换为字符串。

根据文档, Object.keys()返回字符串数组

Object.keys()返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串 属性的顺序与通过手动循环对象的属性给出的顺序相同。( 取自此处

如果要将其转换为数字数组,请使用map()

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(typeof Object.keys(obj).map(Number)[0]) 

Javascript对象没有数字键! 所有键都是字符串。 总是。

如果要将其他内容映射到值,则应使用Map

 var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(typeof Object.keys(obj).map(Number)[0]) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM