Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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?

share|improve this question
1  
i wouldn't do the inside as an array. –  Daniel A. White Aug 29 '11 at 20:07
    
Just a minor nitpick - in general, [] notation is way more awesome than new Array() –  missingno Aug 29 '11 at 20:33
add comment

4 Answers

up vote 4 down vote accepted

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]]);
}
share|improve this answer
add comment
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
}
share|improve this answer
    
Don't think that will work with the {} unless you give the property a name {something: [...]} –  James Montagne Aug 29 '11 at 20:10
add comment
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.

share|improve this answer
add comment

Try this

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

$.each(dates, function(i){
   pairedArray.push([ dates[i], answers[i] ]);
});
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.