3

Could somebody please help me to create an array of array.I have a matrix calculator and I want to create an array of arrays ('smaller').How can I do it?The functiions create2Darray and calculateDet are working ok,so now problem with them.Would be really grateful for the help.I need an array of these arrays (main matrix's minors) to calculate their determinants and calculate the inverted matrix Here is the 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];
 }
 }
 }
 }
 }
}
SomeShinyObject
7,8316 gold badges41 silver badges60 bronze badges
asked May 22, 2013 at 14:30

2 Answers 2

2

Try Like this 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]);
answered May 22, 2013 at 14:36
Sign up to request clarification or add additional context in comments.

Comments

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);

Use it like this:

var matrix = create2Array(10, 10);

Or you can even specify a custom init function which takes the index as param. Say if you want to init your matrix with 0 by default:

var matrix = create2Array(10, 10, function(x, y) { return 0;});
answered May 22, 2013 at 14:36

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.