【问题标题】:What is the best way to get output from a 2 layer loop for 2D array in Javascript?从 Javascript 中的 2D 数组的 2 层循环获取输出的最佳方法是什么?
【发布时间】:2013-07-23 12:30:53
【问题描述】:

这是我的代码:

var myArray = {}; 
myArray["abc"] = new Array();
myArray["def"] = new Array();
myArray["abc"][0] = "John";
myArray["abc"][1] = "Mary"; 
myArray["abc"][2] = "Jack";  
var letter = "";
var id = "";

for (var i_letter in myArray)    {                
        for (var j_id = 0; j_id < myArray[i_letter].length; j_id++)  {                   
                if (myArray[i_letter][j_id]=== "Mary")  {
                      letter = i_letter;   // error ?
                      id = j_id;   // error?
                }
        }
}
document.write( letter + “ , ” + id);   // why error?  Suppose to be “abc , 1”  

从循环外部获取输出(即 i_letter 和 j_id)的最佳方法是什么?
顺便问一下,如果 myArray 包含大量数据,有没有更高效的代码编写方式?

【问题讨论】:

    标签: javascript arrays for-loop multidimensional-array


    【解决方案1】:

    请看我的评论:

    var myArray = new Array(); // error here
    myArray["abc"] = new Array();
    myArray["def"] = new Array();
    myArray["abc"][0] = "John";
    myArray["abc"][1] = "Mary"; 
    myArray["abc"][2] = "Jack";  
    var letter = '';
    var id = '';
    
    myLoop: // initial point of breaking outer for
    for (i_letter in myArray) {               
            for (j_id=0; j_id < myArray[i_letter].length; j_id++)  {                   
                    if (myArray[i_letter][j_id] === "Mary")  {
                          letter = i_letter;   
                          id = j_id;
                          break myLoop; // break from two for
                    }
            }
    }
    document.write( letter + ' , ' + id); // error here because of using “ and ”
    

    这种情况下最好的方法是设置循环的初始点myLoop,当发现Mary时,通过break myLoop停止执行for

    jsfiddle 上的演示。

    希望对您有所帮助。

    【讨论】:

    • 如果这解决了问题,请将其标记为已接受的答案,否则它将不必要地保持打开状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2010-09-14
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多