循环之后,Javascript在数组中没有值

时间:2015-06-07 17:43:44

标签: javascript arrays

我的Java Script功能有问题。从HTML我从textarea提取日期到数组,我想对数组中的值进行一些计算。 在循环中,我可以在创建的数组中看到值,但是在它们没有之后。为什么?任何的想法?请帮帮我......

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
        }
    }   
}

1 个答案:

答案 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循环中作用域,因此,在for循环之外它将不可用。这就是循环后没有警报的原因。

如果您需要外部信息,请在for循环外移动