user906568
user906568

Reputation: 471

javascript array of arrays

I have the following arrays:

var dates = new Array();
var answers = new Array();

Once Populated, they will be the same length. What I need is an array that pair the same index values of the arrays. Like so:

var pairedArray = new Array();
//pairedArray should have the form: [[dates[0], answers[0]], [dates[1], answers[1]], ...., [dates[n-1], answers[n-1]]]

e.g.

data: [
            [Date.UTC(2010, 0, 1), 29.9], 
            [Date.UTC(2010, 2, 1), 71.5], 
            [Date.UTC(2010, 3, 1), 106.4]
        ]

How is this possible given that I have two arrays of the same length, answers and dates that are already populated?

Upvotes: 4

Views: 7616

Answers (4)

user113716
user113716

Reputation: 322452

var data = $.map(dates, function(v,i) { return [ [ v,answers[i] ] ]; });

You can use the jQuery.map()[docs] method, but you need to double-wrap the returned Array because when $.map gets an Array, it performs a concat.

Upvotes: 2

ShankarSangoli
ShankarSangoli

Reputation: 69905

Try this

var dates = new Array();
var answers = new Array();
var pairedArray = new Array();

$.each(dates, function(i){
   pairedArray.push([ dates[i], answers[i] ]);
});

Upvotes: 0

James Montagne
James Montagne

Reputation: 78630

If you know they are always the same length, simply loop through one and add both to the result:

var data = [];

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

Upvotes: 4

Darin Dimitrov
Darin Dimitrov

Reputation: 1038710

var firstArray = ...
var secondArray = ...
if (firstArray.length === secondArray.length) {
    var result = [];
    for (var i = 0; i < firstArray.length; i++) {
        result.push({ [ firstArray[i], secondArray[i] ] });
    }
    // TODO: do something with the result
}

Upvotes: 1

Related Questions