簡體   English   中英

如何使用(JavaScript)循環遍歷嵌套Json數組並顯示文本

[英]How to loop through Nested Json Array with (JavaScript) for loop and display the text

這可能是一個非常簡單的問題,但是無論我更改了多少次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]);
        }
    }
}

我究竟做錯了什么?

不要in for數組中使用for() 它用於對象屬性。 請改用標准格式。

演示: 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]);
        };
    };
};

首先,控制台是您的朋友。 您收到錯誤ReferenceError: itemvalue is not defined因為javascript區分大小寫。 將最嵌套循環中的itemvalue更改為itemValue

其次,如果要迭代數組,則應使用for-loop而不是for-in-loop

  • 不要在數組上使用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]);
        }
    }
}

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 ,所以在開始時只請求一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM