Reputation: 471
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
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
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
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
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