这可能是一个相当简单的问题,但无论我多少次更改for循环,它都不适合我。那么如何在JavaScript中使用for循环遍历这个数组呢?
var fielditems =[
[["News Tips"],["Opinions"],["MedMinutes"]],
[["Yes"],["No"],["Maybe"]],
[["How"],["Why"],["When"]]
];
这就是我所拥有的,而且它不起作用。我使用警报来测试结果,但它甚至没有返回任何内容。
for(itemSet in fielditems){
var itemSetValues = fielditems[itemSet];
for(set in itemSetValues){
var itemValue = itemSetValues[set];
for(value in itemvalue){
alert(itemValue[value]);
}
}
}
我做错了什么?
答案 0 :(得分:0)
不要将for()
与in
用于数组。这是对象属性。请改用标准格式。
演示: http://jsfiddle.net/ThinkingStiff/EVWch/
var fielditems =[
[["News Tips"],["Opinions"],["MedMinutes"]],
[["Yes"],["No"],["Maybe"]],
[["How"],["Why"],["When"]]
];
for( var itemIndex = 0; itemIndex < fielditems.length; itemIndex++ ){
var itemSetValues = fielditems[itemIndex];
for(var setIndex = 0; setIndex < itemSetValues.length; setIndex++ ){
var itemValue = itemSetValues[setIndex];
for(var valueIndex = 0; valueIndex < itemValue.length; valueIndex++ ){
alert(itemValue[valueIndex]);
};
};
};
答案 1 :(得分:0)
首先,控制台是你的朋友。您收到错误ReferenceError: itemvalue is not defined
,因为javascript区分大小写。将最嵌套循环中的itemvalue
更改为itemValue
。
其次,如果你想迭代一个数组,你应该使用for-loop代替for-in-loop
答案 2 :(得分:0)
for-in
循环for (var i=0; i<fielditems.length; i++) {
var itemSetValues = fielditems[i];
for (var j=0; j<itemSetValues.length; j++) {
var itemvalue = itemSetValues[j]; // notice the case
for (var k=0; k<itemvalue.length; k++) {
alert(itemvalue[k]);
}
}
}
答案 3 :(得分:0)
for..in
适用于对象({}
),不适用于数组([]
)。
您需要使用标准for
循环。
for(var i = 0, iLen = fielditems.length; i < iLen; i++){
var iItem = fielditems[i];
for(var j = 0, jLen = iItem.length; j < jLen; j++){
var jItem = iItem[j];
alert(jItem[0]); // you can also add another loop here, if this will have more elements
}
}
注:
for(var i = 0, iLen = fielditems.length; i < iLen; i++)
优于:
for(var i = 0; i < fielditems.length; i++)
因为每个循环都没有请求fielditems.length
,所以在开始时只需要一次。