有人可以帮我创建一个数组数组。我有一个矩阵计算器,我想创建一个数组数组('较小')。我怎么能这样做?功能create2Darray和calculateDet工作正常,所以现在他们有问题了。真的很感激帮助。我需要这些数组(主矩阵的未成年人)的数组来计算他们的决定因素并计算倒置矩阵 这是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>
的Javascript
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];
}
}
}
}
}
}
答案 0 :(得分:2)
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);
像这样使用:
var matrix = create2Array(10, 10);
或者你甚至可以指定一个自定义的init函数,它将索引作为参数。 假如你想在默认情况下用0初始化矩阵:
var matrix = create2Array(10, 10, function(x, y) { return 0;});
答案 1 :(得分:1)
尝试这样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]);