var masterArray = [ [1,2,3,4,5], [1,2], [1,1,1,1,2,2,2,2,4,4], [1,2,3,4,5] ];
Single line:
masterArray.map(function(a){return a.length;}).indexOf(Math.max.apply(Math, masterArray.map(function(a){return a.length;})));
But it is better to cache map results.
var lengths = masterArray.map(function(a){return a.length;}); lengths.indexOf(Math.max.apply(Math, lengths));
Note that even this code indexOf over the array 3 times ( map , max , indexOf separately).
For more efficient use, you should use a manual iterative array.
var max = -Infinity; var index = -1; masterArray.forEach(function(a, i){ if (a.length>max) { max = a.length; index = i; } });
Reduce Method:
masterArray.reduce(function(maxI,el,i,arr) {return el.length>arr[maxI].length ? i : maxI;}, 0)