You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Object.keys()返回字符串类型的数组?

为什么Object.keys()返回字符串类型的键数组?

这本质上是由JavaScript对象的底层存储规则决定的:

  • JavaScript对象的键(非Symbol类型)都会被自动转换为字符串存储。哪怕你定义对象时用数字、布尔值甚至普通对象当键,引擎都会把它们转换成对应的字符串形式。比如你写const obj = { 123: 'test' },实际上对象内部存储的键是字符串'123'——你能通过obj[123]访问到值,只是因为访问时引擎会自动把数字123转成字符串去匹配。
  • Object.keys()的设计逻辑就是返回对象自身可枚举属性的实际存储的键,既然非Symbol键在对象里都是字符串形式,这个方法自然返回字符串数组。它完全遵循了JS对象的内部存储规范。

如果你的场景需要把整数形式的键转回数字类型,用Object.keys(obj).map(Number)是最直接的处理方式。另外,如果你的业务经常需要保留键的原始类型(比如数字、对象作为键),可以考虑使用ES6引入的Map结构,它支持任意类型作为键,不会自动转换类型。

内容的提问来源于stack exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:10:38