2013-05-22 3 views
2

누군가가 array.Array의 배열을 만들 수 있도록 도와 주시겠습니까? 저는 매트릭스 계산기가있어서 배열 배열을 만들고 싶습니다. 어떻게 할 수 있습니까? fun2jar create2Darray 및 calculateDet 이제 괜찮아, 그래서 지금은 문제가 them.Would 도움이 정말로 고맙게 일하고있다. 나는 결정을 계산하고 거꾸로 행렬을 계산하기 위해 이러한 배열 (주 매트릭스의 미성년자) 배열이 필요합니다 여기에 HTML이 있습니다 :자바 배열 배열을 만드는 방법

<div id = "table4"> 
<div class = "calcHeader">Macierz odwrotna [3x3]</div> 
<form id = "row1"><!--first row--> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
</form> 
<form id = "row2"><!--second row--> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
</form> 
<form id = "row3"><!--third row--> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
    <input type = "text" class = "det3"/> 
</form> 
<div class = "count" onclick="invertMat('det3')"><a href = "#">Wylicz</a></div> 
</div> 

자바 스크립트

function invertMat(matrixClass) { 
    var matrix = create2Darray(matrixClass); 
    var det = calculateDet(matrix); 
    //alert(det); 
    var invMat = new Array(); 
    for (var i = 0; i < matrix.length; i++) { 
     invMat[i] = new Array(); 
     for (var j = 0; j < matrix.length; j++) { 
      invMat[i][j] = 0; 
     } 
    } 
    if (matrix.length == 2) { 
     invMat[0][0] = 1/det * matrix[1][1]; 
     invMat[1][0] = 1/det * (-matrix[1][0]); 
     invMat[0][1] = 1/det * (-matrix[0][1]); 
     invMat[1][1] = 1/det * matrix[0][0]; 
     alert(invMat); 
    } else if (matrix.length == 3) { 
     //var smaller = new Array();//creating an empty array for a matrix minor 
     for (var i = 0; i < matrix.length; i++) { 
      var smaller = new Array(matrix.length - 1); 
      for (h = 0; h < smaller.length; h++) { 
       smaller[h] = new Array(matrix.length - 1); 
      } 
      for (a = 1; a < matrix.length; a++) { 
       for (b = 0; b < matrix.length; b++) { 
        if (b < i) { 
         smaller[a - 1][b] = matrix[a][b]; 
        } else if (b > i) { 
         smaller[a - 1][b - 1] = matrix[a][b]; 
        } 
       } 
      } 
     } 
    } 
} 

답변

1
var matrix = create2Array(10, 10); 

또는 당신도 PARAM으로 인덱스를 취 사용자 지정 init 함수를 지정할 수 있습니다이 같은이 Fiddle

var array1 = new Array(); 

array1.push(1); 
array1.push(2); 


var array2 = new Array(); 

array2.push(3); 
array2.push(4); 

var array3 = new Array(); 
array3.push(array1); 
array3.push(array2); 

console.log(array3[0]); 
console.log(array3[1]); 
2

Live demo

function create2Array(d1, d2, fn) { 
    var arr = [], 
     d = function(x, y) {}, 
     f = fn || d; 
    for (var i = 0; i < d1; i++) { 
     for (var j = 0, curr = []; j < d2; j++) { 
      curr[j] = f.call(window, i, j); 
     }; 
     arr[i] = curr; 
    }; 
    return arr; 
}; 


function print2DArray(arr) { 
    document.body.innerHTML += "<p><b>Array:</b></p>"; 
    for (var i = 0, len = arr.length; i< len; i++) { 
     document.body.innerHTML += "<p><b>" + i + "</b>: " + arr[i].join(" ") + "</p>"; 
    }; 
}; 

var matrix = create2Array(10, 10, function(x, y) { return 0;}), 
    m2 = create2Array(10, 10, function(x, y) { return x + y;}); 
print2DArray(matrix); 
print2DArray(m2); 

를 사용하여 같이하십시오. 기본적으로 0으로 행렬을 초기화하려면 다음과 같이하십시오.

var matrix = create2Array(10, 10, function(x, y) { return 0;}); 
관련 문제