0

javascript中的以下内容是否正确:

  var candidates = [];
  candidates.push(["Rand","Paul"]);
  candidates.push(["Hillary","Clinton"]);

其中每个元素a本身就是两个字符串的数组。

我将a在 for 循环中推动。

此外,我可以按如下方式遍历数组:

for(var candidate in candidates)
{
    var first_name = candidate[0];
}

http://jsfiddle.net/barra/7dVer/1/

4

3 回答 3

1

你不应该在数组中使用 for in !如果扩展了 Array 原型,您将在那里运行所有新功能作为键。

你应该做:

var i, first_name;
for( i = 0; i < candidates.length; i++ )
{
    first_name = candidates[i][0];
}
于 2013-08-15T21:26:14.977 回答
1

几乎。您创建数组的方式很好,但是您对for ... in循环的理解略有缺陷。在数组的情况下将是索引candidatekey所以candidate[0]行不通。这就像说0[0],你实际上需要使用candidates[candidate][0]. 这是您的 JSFiddle 更新以显示该工作,但还有其他原因不在for ... in数组上使用循环。遍历数组时,您应该使用常规for循环:

for(var i = 0; i < candidates.length; i++){
    var first_name = candidates[i][0];
}

或者在现代浏览器中使用Array.forEach (或使用SHIM):

candidates.forEach(function(candidate){
    var first_name = candidate[0];
});

为每个候选人使用一个对象也可能是值得的。这应该使事情更具可读性:

var candidates = [];
candidates.push({first_name: "Rand", last_name: "Paul"});
candidates.push({first_name: "Hillary", last_name: "Clinton"});

然后你可以[0].first_name;替换 这更具可读性。

你最终会得到非常易读、可工作的代码

于 2013-08-15T21:26:44.903 回答
0

这允许您遍历数组索引,而不是它的项目

for(var candidate in candidates)
{
    var first_name = candidate[0];
}

你想要做的是:

for(var candidateKey in candidates)
{
    var candidate = candidates[candidateKey];
    var first_name = candidate[0];
}
于 2013-08-15T21:27:28.863 回答