user3045800
user3045800

Reputation: 43

creating a multidimensional array (nXn) matrix using javascript

I am trying to create a matrix table. The values to be plugged into the matrix will be user input from an html table (basically a unique pairing table which pairs two elements at a time and for each pair a user can select which he prefers and by how much it is prefered on a scale of 1-9 using radio buttons). it is the preferences i.e. 1-9 that gets plugged into the matrix table and the number of unique pairing that detemines the lenght of the matrix.

when the matric is generated i want to have something like this:

0    1    2    3    4    sum    
1   [1]  [6]  [2]  [8]    17    
2   [ ]  [1]  [9]  [4]    15    
3   [ ]  [ ]  [1]  [7]    8    
4   [ ]  [ ]  [ ]  [1]    1    

The problem is now i want to get the values of clicked radios into the matix. I know how to get it but just don't know how to fit it into the matrix. Here is the code I have for now, pls ask me questions if needed thanks:

$(function(){
    var tableLenght = new Array();
    $('#matrix').click(function(){
    var counter = 0;
    $("#riskForm tr").each(function(){
        //ignores the header of the table (the title)
    if(counter >=1){
        tableLenght.push($(this).closest('tr').children("td:eq(1)").text());
    }
    counter++;
    });

// get unique attributes of in our table
var uniqueList = new Array();
//push first element onto list
uniqueList.push(tableLenght[0]); //pushes current elem onto the array
var cur = tableLenght[0]; //sets first element by default
for(var i = 1; i < tableLenght.length; i++){ //loops through the whole lenght of our array
    if(cur != tableLenght[i]){//checks if the current is not same as the next one
            cur = tableLenght[i]; //sets the new elemt
    uniqueList.push(tableLenght[i]); //pushes onto the array
    }
}
alert(uniqueList); //alerts only the unique table rows in the tableLenght array
var myArray = new Array(uniqueList);

    for (var i = 0; i < uniqueList; i++) {
        myArray[i] = new Array(uniqueList);
        for (var j = 0; j < uniqueList; j++) {
            myArray[i][j] = '';
        }
}
});

//to show/get the values of selected radio buttons
function showValues() {
    var fields = $( ":input").serializeArray();
    $( "#results" ).empty();
    jQuery.each( fields, function( i, field ) {
    $( "#results" ).append( field.value + " " );
    });
}

$( ":checkbox, :radio" ).click( showValues );
showValues();
$('#display').click(function (n) {
document.location.href="trialIndex.php"
    });
});

Your help is much appreciated!

Upvotes: 0

Views: 7082

Answers (2)

saint
saint

Reputation: 268

I think you are trying to implement the AHP algorithm here. It is quite complex to write the whole code here and how it'll work but here is a link of an already exiting work on AHP. Hope it helps: https://github.com/humbertoroa/ahp

Upvotes: 1

Emil A.
Emil A.

Reputation: 3445

You can push a value to an array, for example:

var a = [];
a.push(1);
a.push(2);
console.log(a); // [1, 2]

You can set it based on index:

var a = [];
a[0] = 1;
a[1] = 2;
console.log(a); // [1, 2]

To create a multi dimensional array you can simply push arrays to one array.

var a = [1,2,3];
var b = [4,5,6];
var c = [];
c.push(a);
c.push(b);
console.log(c); // [[1, 2, 3], [4, 5, 6]]

Upvotes: 2

Related Questions