47

I would like to use jQuery to convert an array of objects to array of arrays using map.

For example if I have this:

var ObjArr = [{ a:1,b:2 },{ a:2,b:3 },{ a:3,b:4 }];
var ArrArr = $.map(ObjArr, function(n,i){
   return [ n.a, n.b ];
});

So that the result would be:

ArrArr = [[1,2],[2,3],[3,4]]

1 Answer 1

96

With the jQuery.map()(docs) and map()(docs) methods you need to double wrap the return value:

var ArrArr = $.map(ObjArr, function(n,i){
   return [[ n.a, n.b ]];
});

...otherwise for some reason it concats the Array being returned. This way it concats the outer Array, and placing the content (the inner Array) at the next index.

Sign up to request clarification or add additional context in comments.

2 Comments

It works! However, could you tell me is there any reason why jQuery does it?
could you tell me is there any reason why jQuery does it: Probably to make .map() not restricted to a 1:1 mapping. e.g. Returning [] can filter out the element without using a separate .filter(). Likewise .map() can also be used to flatten a list of lists.

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.