Nothing can out better plain loop version, but you can use Array.prototype.reduce like this
var arr = [ [1, 4, 5], [2, 6, 7], [3, 3, 9]], col = 1;
var best = arr.reduce(function(tillNow, current) {
if (tillNow.best < current[col]) {
tillNow.best = current[col];
tillNow.row = current;
}
return tillNow;
}, {best:0, row:[]});
console.log(best.row); # [ 2, 6, 7 ]
console.log(best); # { best: 6, row: [ 2, 6, 7 ] }
Reduce function accepts the till now value as the first parameter and the current element as the second parameter.
For the first element, parameters will be like this
tillNow : {best:0, row:[]} : current: [1, 4, 5]
We compare current's indented column with tillNow.best. If current's is bigger than tillNow, the best element and the current row will be set in tillNow and that will be returned which will be fed back into the reduce's next iteration as tillNow. So, in our case, on the second iteration, values change like this
tillNow : {best:4, row: [1, 4, 5]} : current: [2, 6, 7]
And on third iteration,
tillNow : {best:6, row: [2, 6, 7]} : current: [3, 3, 9]
And finally the result will be
{ best: 6, row: [ 2, 6, 7 ] }