0

これはかなり単純な質問かもしれませんが、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]);
        }
    }
}

私は何が間違っているのですか?

4

4 に答える 4

0

配列にはfor()withを使用しないでください。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]);
        };
    };
};

</p>

于 2012-07-12T18:37:50.893 に答える
0

まず、コンソールはあなたの友達です。ReferenceError: itemvalue is not definedJavaScript では大文字と小文字が区別されるため、エラーが発生します。itemvalue最もネストされたループを に変更しますitemValue

次に、配列全体を反復処理する場合は、for-in-loop の代わりに for-loop を使用する必要があります

于 2012-07-12T18:39:51.157 に答える
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]);
        }
    }
}
于 2012-07-12T18:39:55.213 に答える
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ループごとに要求されるわけではなく、最初に 1 回だけです。

于 2012-07-12T18:40:51.243 に答える