2015-06-07 3 views
-1

У меня проблема с моей функцией в Java Script. Из HTML я извлекаю дату из textarea в массивы, и я хочу сделать некоторые вычисления по значениям в массиве. В цикле я могу видеть значения внутри созданных массивов, но сразу после них нет. Зачем? Есть идеи? Пожалуйста, помогите мне ...Javascript no values ​​in array after loop for

function forwardAlgorytm() { 
//1.P 
    var linesP = new Array(); 
    linesP = $('#textPrawdopodobienstwo').val().split(' '); 
    var rozmP = linesP.length; 
    var macP = []; 
    for (var i=0; i<linesP.length; i++){ 
     macP.push($.trim(linesP[i])); 
    } //alert(macP[1]); //-działa 

    var linesQ = new Array(); 
    linesQ = $('#wartoscalfabet').val().split(' '); 
    var rozmQ = linesQ.length; //alert(rozmQ); 
    var macQ = []; 
    for (var i=0; i<linesQ.length; i++){ 
     macQ.push($.trim(linesQ[i])); 
    }//alert(macQ[1]); // - to działa 
    //3.S 
    var linesS = new Array(); 
    linesS = $('#wartoscsekwencji').val().split(' '); 
    var rozmS = linesS.length; 
    //alert(linesS[3]); 
    var macS = []; 
    for (var i=0; i<linesS.length; i++){ 
     macS.push($.trim(linesS[i])); 
    }//alert(macS[2]);   

    //4.A 
    var A = []; 
    A = document.getElementById("macierzPrzejsc").value.split('\n').map(function(x){return x.split(' ')}); 
    //alert(A[1][0]); //-działa WRESZCIE 
    //5.E 
    var E = []; 
    E = document.getElementById("macierzEmisji").value.split('\n').map(function(x){return x.split(' ')}); 
    //alert(E[1][1]); -ok 

    //alert(A[0].length); -ok 
    /* 
     @param: 
     rozmP to n 
     rozmS to p 
     rozmQ to q 
    */ 

    var fw = []; 
    var forward= []; 
    var bbb = []; 

    var x1 = macQ.indexOf(macS[0]); //to działa 

    for (var m=0; m<E[0].length; ++m) { 
     var f = new Array(E[0].length); 
     //alert(E[x1][m]); //to działa w sumie 
     f[m] = new Array(macS.length); 
     f[m][0] = macP[m] * E[x1][m]; 
     alert(f[m][0]); // we can see values of array 
    } 
    //alert(f[0][0]); // no alert after loop 

    for (var i=1; i<macS.length; ++i) { 
     var indeks = macQ.indexOf(macS[i]); 
     //alert(indeks); //-to działa 
     for (var j=0; j<E[0].length; ++j) { 
      var suma = 0; 
      // alert(suma); -działa : 0 
      for (var k=0; k<A[0].length; ++k) { 
       suma += (f[k][i-1])*A([k][j]); 
      }// alert(suma); //nadal suma ma 0 
      f[j][i] = E[indeks][j] * suma; 
      // alert(f[j][i]); //nie działa 
     } 
    } 
} 
+0

где именно вы застряли? –

ответ

0

Я думаю, вы говорите об этом предупреждении

for (var m=0; m<E[0].length; ++m) { 
         var f = new Array(E[0].length); 
         //alert(E[x1][m]); //to działa w sumie 
         f[m] = new Array(macS.length); 
         f[m][0] = macP[m] * E[x1][m]; 
         alert(f[m][0]); // we can see values of array 
          } 
         //alert(f[0][0]); // no alert after loop 

Второе предупреждение не будет отображаться как е является областью действия в течение цикла и, следовательно, вне для цикла она будет не будут доступны. Вот почему предупреждение не возникает после цикла.

В случае, если вам нужна эта информация снаружи, переместите f за петлю for