如何使用 (JavaScript) for 循环遍历嵌套 Json 数组并显示文本

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

本文关键字:Json 嵌套 数组 文本 显示 遍历 循环 何使用 JavaScript for      更新时间:2023-09-26
这可能是

一个相当简单的问题,但无论我更改多少次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]);
        }
    }
}

我做错了什么?

不要将

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

首先,控制台是你的朋友。你得到错误ReferenceError: itemvalue is not defined因为javascript区分大小写。将嵌套最多的循环中的itemvalue更改为 itemValue

其次,如果你想迭代一个数组,你应该使用 for 循环而不是 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,只是在开始时请求一次。