2013-07-23 53 views
0

这里是我的代码:什么是在JavaScript中的二维数组的2层循环获得输出的最佳方式是什么?

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包含大量数据,是否有更高效地编写代码?

回答

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的初始点,当发现小丽刚刚停止做break myLoop执行for

演示jsfiddle

希望这帮助。

+0

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

相关问题