2014-09-25 59 views
0

我想循环使用几个for循环来调用每个数组项。我遇到了一些麻烦,只是把正确的代码拉下来。我曾尝试使用数组的全局定义等。使用具有数组的数组变量修改数组中的字符串

var An = new Array(   
     "11111100011111",  
     "11111000011111",  
     "11110011001111", 
     "11100000000111", 
     "11001111110011", 
     "10011111111001"); 
var Bn = new Array(   
     "1000000001",  
     "1001111001",  
     "1000000001", 
     "1000000001", 
     "1001111001", 
     "1000000001"); 

// This second part sits in a onload function. 
var alphabet = "AB".split(""); 

for (x = 0; x < 6; x++) {  
    for (i = 0; i < 2; i++) { 
    var my_object = {}; 
    my_object = window[alphabet[x] + 'n[' + i + ']']; 
    my_object = window[my_object].replace(/0/g, "B"); 
    my_object = window[my_object].replace(/1/g, "_"); 
    } 
} 
+1

你为什么这么复杂? – Nit 2014-09-25 16:15:17

+0

我有很多数组需要运行。 – 2014-09-25 16:28:07

+2

你想达到什么目的?你在哪里设置'name'?如果你使用'alphabet [x]'和'alphabet.length == 2',为什么'x'要等到'6'? – Oriol 2014-09-25 16:41:03

回答

2

你应该做的是把AnBn成一个对象。这将使它更容易很多稍后参考。

var alphabet = { 
    An: [ 
     "11111100011111",  
     "11111000011111",  
     "11110011001111", 
     "11100000000111", 
     "11001111110011", 
     "10011111111001" 
    ], 
    Bn: [ 
     "1000000001",  
     "1001111001",  
     "1000000001", 
     "1000000001", 
     "1001111001", 
     "1000000001" 
    ] 
}; 

然后你挑出你想要的数组并循环。

var arrays = ['A', 'B']; 
for(var x = 0, xLen = arrays.length; x < xLen; x++){ 
    var my_key = arrays[x]+'n'; 
    for(var i = 0, iLen = alphabet[my_key].length; i < iLen; i++){ 
     alphabet[my_key][i] = alphabet[my_key][i].replace(/0/g, "B"); 
     alphabet[my_key][i] = alphabet[my_key][i].replace(/1/g, "_"); 
    } 
} 

实际上,对于内for循环,你也可以使用Array.map

var arrays = ['A', 'B']; 
for(var x = 0, xLen = arrays.length; x < xLen; x++){ 
    var my_key = arrays[x]+'n'; 
    alphabet[my_key] = alphabet[my_key].map(function(val){ 
     val = val.replace(/0/g, "B"); 
     val = val.replace(/1/g, "_"); 
     return val; 
    }); 
} 
相关问题