0

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!

2 Answers 2

2

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]]
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

Your Answer

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.