【问题标题】:Javascript for/in loops through properties, not indexes and returns stringsJavascript for/in 循环遍历属性,而不是索引并返回字符串
【发布时间】:2010-11-07 19:56:05
【问题描述】:

好的,我有这个代码:

var room = [ { time: 0, people: 0 } ];

然后:

time = 5;
for( var i in room ) {
  if( room[i].time < time ){
    spliceIndex = i + 1;
  }
}
console.log(spliceIndex);

控制台显示:01 - 这意味着 1 被连接,这进一步意味着 i 是一个字符串,而不是预期的整数。将索引转换为整数解决了问题,但我已经敲了好几个小时……谁能解释为什么会这样?我在 Firefox 3.5 和 Safari 4 上得到了这个。

【问题讨论】:

标签: javascript arrays indexing loops


【解决方案1】:

因为 for-in 列出对象属性,而不是数组索引。对象属性是字符串,数组索引显示为属性,只是它们是数字字符串。

【讨论】:

  • 这就是为什么在数组上使用“for in”循环不是一个好主意。它们遍历数组的所有属性(除了不可枚举的内置属性),包括字符串属性和继承自 Array.prototype 的属性。
猜你喜欢
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
相关资源
最近更新 更多