var masterArray = [ [1,2,3,4,5],
[1,2],
[1,1,1,1,2,2,2,2,4,4],
[1,2,3,4,5] ];
One-liner jest:
masterArray.map(function(a){return a.length;}).indexOf(Math.max.apply(Math, masterArray.map(function(a){return a.length;})));
Ale lepiej buforować map
wyników.
var lengths = masterArray.map(function(a){return a.length;});
lengths.indexOf(Math.max.apply(Math, lengths));
Uwaga, jeszcze kod iteracji tablicy 3 razy (map
, max
, indexOf
oddzielnie).
Dla bardziej wydajnego powinieneś ręcznie iterować tablicę.
var max = -Infinity;
var index = -1;
masterArray.forEach(function(a, i){
if (a.length>max) {
max = a.length;
index = i;
}
});
Reduce
Metoda:
masterArray.reduce(function(maxI,el,i,arr) {return el.length>arr[maxI].length ? i : maxI;}, 0)
skuteczny w jaki sposób? –
Powinienem był to wyjaśnić. Chciałem tylko w zwięzły sposób, nic o efektywności pamięci – jmancherje