好的,我有这个代码:
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上得到了这个.
因为for-in列出了对象属性,而不是数组索引.对象属性是字符串,数组索引显示为属性,只有它们是数字字符串.