javascript - 为什么数字设置为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)
吗?
解决方案
对象属性始终是字符串(或符号)。即使您可以使用数字属性定义对象,或者通过将数字放入括号符号中,属性本身仍将是一个字符串。
const obj = { 1: 'one' };
const [prop] = Object.keys(obj);
console.log(prop, typeof prop);
for..in
当您使用、 或或任何其他方法从对象中提取属性时Object.keys
,它将是一个字符串(或一个符号)。要使其成为数字,您需要将其明确转换为数字,就像您在问题中所做的那样。
推荐阅读
- xamarin - 使用 Xamarin 更改 UIImage 颜色
- vba - 如何从主窗体更新子窗体中的图像框控件源
- amazon-web-services - Aws LEX 如何为特定于会话的插槽设置动态列表选项
- r - 如何计算R中点组的质心?
- node.js - nodejs获取请求阻塞负载测试,需要非阻塞
- java - Java RMI 在 LAN 中工作时无法通过 WAN 连接到服务器
- javascript - javascript JSON.stringify 的解决方法不保留方法?
- google-sheets - 如何获取包括今天在内的历史数据
- python - 在没有 chromedriver 弹出的情况下运行 selenium
- c++ - 为什么赋值运算符不能按预期工作?