<分区>
当我在 Javascript 中循环遍历一个对象以提取其键时,为什么这些键本应是整数却转换为字符串?
obj = {1:'a', 2:'b'};
arr = [];
for(var key in obj){
if (obj.hasOwnProperty(key)){
arr.push(key);
}
}
现在 arr
是 [ "1", "2"]
而不是 [1, 2]
标签 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/