首页 > 解决方案 > 为什么数字设置为Object值时会转成字符串,如何避免

问题描述

我有这个对象:

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)吗?

标签: javascript

解决方案


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

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

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


推荐阅读