通过javascript对象循环将键转换为字符串

Looping through javascript object converts keys to string

本文关键字:转换 字符串 javascript 对象 循环 通过      更新时间:2023-09-26

当我在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会在你使用它作为属性名时将它转换为字符串。

考虑:

key = {
  toString: function () { return "Blah" }
};
myObject = {}
myObject[key] = "value";
// writes "Blah"
document.write(Object.keys(myObject));

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

meagar所说的是正确的,但如果出于某种原因你想要数字,你可以用加号将它们转换为前缀;

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

说,你可能有兴趣看看对象。键方法