在Javascript中,从2D数组的两层循环中获取输出的最佳方法是什么?

在Javascript中,从2D数组的两层循环中获取输出的最佳方法是什么?,javascript,arrays,for-loop,multidimensional-array,Javascript,Arrays,For Loop,Multidimensional Array,这是我的密码: 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) {

这是我的密码:

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”  
var myArray={};
myArray[“abc”]=新数组();
myArray[“def”]=新数组();
myArray[“abc”][0]=“John”;
myArray[“abc”][1]=“Mary”;
myArray[“abc”][2]=“Jack”;
var字母=”;
var id=“”;
对于(myArray中的变量i_字母){
对于(var j_id=0;j_id
从循环外部获取输出(即i_字母和j_id)的最佳方式是什么?

顺便问一下,如果myArray包含大量数据,是否还有更有效地编写代码的方法?

请查看我的评论:

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 ”
var myArray=new Array();//这里出错
myArray[“abc”]=新数组();
myArray[“def”]=新数组();
myArray[“abc”][0]=“John”;
myArray[“abc”][1]=“Mary”;
myArray[“abc”][2]=“Jack”;
var字母=“”;
变量id=“”;
myLoop://外部断开的初始点
对于(myArray中的i_字母){
对于(j_id=0;j_id
对于这种情况,最好的方法是设置循环
myLoop
的初始点,当发现Mary时,通过执行
break myLoop
停止执行
for

演示


希望这有帮助。

如果这解决了问题,请将其标记为已接受答案,否则它将不必要地保持打开状态。