Это вообще в одну строку делается.
var input = [
[-1,-3,-2],
[1,3,5],
[2,6,3],
[7,3,3]
];
var result = input.map(a=>a.reduce((a, b)=>Math.max(a, b))) // all magic here
console.log(result) // [-1,5,6,7]
UPD: То-же самое, но подробнее:
var result = input.map(function(subArray) {
return subArray.reduce(function(prev, current){
return Math.max(prev, current);
})
})
array.
map() - делает какие-то вычисления с каждым элементом массива, в нашем случае со "строкой" из двумерного массива. Возвращает новый массив с результатами.
array.
reduce() - проходит по всем элементам массива, возвращает один элемент.
Например
[1,2,3,4,50].reduce((prev, current)=>prev + current)
вернет сумму всех элементов.
Math.max() - сравнивает два числа, возвращает то что побольше.
=> -
стрелочная функция.
Позволяет записать короткие анонимные функции еще короче.
В основном за счет экономии на словах function и return. Если у функции только один аргумент на входе, или только одно действие, то можно еще и скобочки выбросить.
var x = function (element) {
return element.width
}
превращается в
var x = element => element.width
UPD2: как подсказывает
Panya, можно написать еще короче:
var result = input.map(a=>Math.max.apply(null,a))