Colbs
Colbs

Reputation: 597

Dynamically build 2D array Javascript

I want to build a 2 dimensional array dynamically, but I'm having trouble.

answers and votes (single string arrays) will always be the same length;

I need an array like this:

var data = 
        [['Answer', 'Votes'],
        [answers[0],  parseInt(votes[0])],
        [answers[1],  parseInt(votes[1])],
        [answers[2],  parseInt(votes[2])],
          ....
        ];

This doesn't work;

var data[];
var arrayLength = answers.length;
for (var i = 0; i < arrayLength; i++) {
    data += [answers[i], votes[i]]; //**Maybe the only line that needs tweaking?
}

Upvotes: 0

Views: 44

Answers (4)

dsharew
dsharew

Reputation: 10665

Try this:

var data = [];

data[0] = ['answers','votes']

var arrayLength = answers.length;
for (var i = 0; i < arrayLength; i++) {
    data[i+1]= [answers[i], parseInt(votes[i])]; 
}

//check
console.table(data)

Upvotes: 1

Sarmin Akter
Sarmin Akter

Reputation: 120

Since you wrote answers [i] and votes[i] so, it seems your answers and votes are in two different array. so why the loop is needed.

Suppose answers and votes are:

var answers = ["A", "B", "C", "D", "E", "F"];
var votes = ["1", "2", "3", "4", "5", "6"];

building new array

var data = ["Answers", "Votes"];

data.Answers=answers;
data.Votes=votes;

console.log(data);

Upvotes: 0

Xlander
Xlander

Reputation: 1331

var data = [];
var arrayLength = answers.length;
data[0] = ['Answer', 'Votes'];
for (var i = 1; i < arrayLength; i++) {
    data.push([answers[i], votes[i]]); /*It's not += but .push()*/
}

Upvotes: 1

Try this:

var data = [];
var arrayLength = answers.length;
for (var i = 0; i < arrayLength; i++) {
    data.push([answers[i], votes[i]]);
}

Upvotes: 0

Related Questions