我有点困惑:

我有这样的命令列表:

var commands = [{"command": "read"}, {"command": "write"}, {"command": "login"}];

如果我尝试访问以下命令之一,它将起作用:
console.log(commands[0]["command"]); // Output is "read"
console.log(commands[0].command);    // Output is "read"

但是,如果我尝试这样做,输出始终是不确定的:
for(command in commands)
    console.log(command["command"]); // undefined, undefined, undefined

最佳答案

为什么将for..in与数组一起使用?只需按索引访问,就可以避免原型(prototype)扩展的潜在问题(请参阅hasOwnProperty)

var i,len=commands.length;

for (i=0;i<len;i++ ) {
    console.log commands[i].command
}

如果顺序无关紧要,则更加简洁
for (i=commands.length-1;i>=0;i-- ) {

}

或者
var i=commands.length;
while (i--) {
   ...
}

关于javascript - for(…in…)不适用于数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7190402/

10-10 05:10