【问题标题】:Why does a number convert into a string when setting it as a Object value, and how to avoid it [duplicate]为什么将数字设置为Object值时会转换为字符串,以及如何避免它[重复]
【发布时间】:2019-11-14 16:01:53
【问题描述】:

我有这个对象:

const someobj = {
  100: 'a',
  200: 'b',
  300: 'c'
}

for (const prop in someobj) {
  console.log(prop)
  console.log({ prop: prop })
}

运行时我得到这个输出:

100
{ prop: '100' }
200
{ prop: '200' }
300
{ prop: '300' }

为什么 prop 值从数字转换为字符串?除了做Number(prop)之外,还有什么可以避免这种情况的吗?

【问题讨论】:

  • 你试过parseInt(prop)吗?

标签: javascript


【解决方案1】:

对象属性总是字符串(或符号)。即使您可以使用数字属性定义对象,或者通过将数字放入括号符号中,属性本身仍然是一个字符串。

const obj = { 1: 'one' };
const [prop] = Object.keys(obj);
console.log(prop, typeof prop);

当您使用for..inObject.keys 或任何其他方法从对象中提取属性时,它将是一个字符串(或一个符号)。要使其成为数字,您需要将其明确转换为数字,就像您在问题中所做的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多