gpt4 book ai didi

Javascript "for(i in array)"将 i 设置为最后一个索引

转载 作者:行者123 更新时间:2023-11-30 05:56:12 25 4
gpt4 key购买 nike

据我所知,代码

var a = new Array("a","b","c");
var out = "";
for(i in a)
out += i+":"+a[i]+"\n";

应该着手

0:a
1:b
2:c

对吗?

好吧,我的一个项目中有以下代码片段:

for(i in player.neededItems)
{
debug(i+":");
if(!player.hasItem(player.neededItems[i].type))
itemsRemaining.push(player.neededItems[i]);
debug(i+"<br />");
}
  • debug(x) 只是一个将 x 附加到 ID 为“debug”的 div 的内容的函数。
  • player.neededItems 是一个对象数组。
  • itemsRemaining 是一个以前为空的数组。
  • player.hasItem 返回玩家是否有元素。

好的。所以这就是它变得奇怪的地方。在 for 循环中,'i' 仅用作数组的索引。它没有以任何方式修改。但是,“调试”中的输出如下:

0:3
1:3
2:3
3:3

为什么“我”在改变?! player.neededItems 不会在任何函数或任何内容中被修改。我不知道发生了什么。但是,当我切换

for(i in player.neededItems)

对于

for(i = 0; i < player.neededItems.length; i++)

一切正常。

那么我是不是遗漏了一些关于“for(i in a)”语法的功能?还是我偶然发现了 webKit 中 javascript 解析器的错误?或者(更有可能)我要疯了吗?

最佳答案

for(var i in player.neededItems)
{
debug(i+":");
if(!player.hasItem(player.neededItems[i].type))
itemsRemaining.push(player.neededItems[i]);
debug(i+"<br />");
}

关于Javascript "for(i in array)"将 i 设置为最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11764077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com