【问题标题】:Can't force object keys to be integer [duplicate]不能强制对象键为整数 [重复]
【发布时间】:2019-02-03 05:44:12
【问题描述】:
const obj = {
15: 100
};
for(let key in obj)
    console.log(key, typeof(key), typeof(+key))

结果是15 string number。我正在尝试迭代对象值并将其中一些放入 Map 对象中,但类型兼容性似乎无法实现。我在这里做错了什么还是对象键总是字符串?

Object.keys(obj)

也返回 ["15"]

【问题讨论】:

  • 因为它们实际上就是这样。如果您希望它们成为数字,则将其映射到数字。 Object.keys(obj).map(k => +k)
  • 猜对了,对象键是字符串,无论你是否用引号表示它们。查看问题:stackoverflow.com/questions/4348478/…
  • 即使是数组的键,在内部也是字符串:console.log(Object.keys([1,2,3,4]));
  • 感谢您用解释引导我进入主题

标签: javascript arrays object types


【解决方案1】:

对象键总是字符串。你可以看到更多关于它here

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

为了能够实现您想要的,您需要将键转换回整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2020-07-21
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多