javascript - 遍历javascript对象将键转换为字符串

标签 javascript

<分区>

当我在 Javascript 中循环遍历一个对象以提取其键时,为什么这些键本应是整数却转换为字符串?

obj = {1:'a', 2:'b'};
arr = [];
for(var key in obj){
  if (obj.hasOwnProperty(key)){
    arr.push(key);
  }
}

现在 arr[ "1", "2"] 而不是 [1, 2]

最佳答案

转换 key 的不是循环;而是循环。事实上,键只能是字符串。您不能拥有任何其他类型的 key 。如果您的 key 不是字符串,当您将其用作属性名称时,JavaScript 会将其转换为字符串。

考虑:

key = {
  toString: function () { return "Blah" }
};

myObject = {}

myObject[key] = "value";

// writes "Blah"
document.write(Object.keys(myObject));

请注意,如果您没有提供 toString,则键将是字符串 "[object Object]"

关于javascript - 遍历javascript对象将键转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32058941/

相关文章:

javascript - Vue.js 破坏了 Google map 功能

javascript - 缩短Jquery条件

javascript - d3 中的渲染性能

javascript - html中的嵌套消息

javascript - React 上下文 - useEffect

javascript - 使内联 block 垂直对齐顶部?

JavaScript getElementById(...) 为 null 或不是对象 IE

调用函数的 Javascript 顺序

javascript - jquery 根据数据属性显示/隐藏多个元素

javascript - 如何在 Node js中记录特定的错误消息?