2015-04-08 2 views
3

Я ищу хороший способ найти максимальное значение ABSOLUTE массива.Найти абсолютное максимальное значение в массиве Javascript

Мой массив т.е.

var array = [10,20,40,-30,-20,50,-60]; 

Тогда:

Math.max.apply(null,array); 

будет приводить к '50'. Но, на самом деле, я хочу, чтобы он вернулся «60».

Опция заключается в создании второго массива с использованием Math.abs, но на самом деле мне интересно, можно ли комбинировать функцию apply, поэтому это одно из элегантных решений.

ответ

15
Math.max.apply(null, array.map(Math.abs)); 

Если целевой браузеры, которые не поддерживают Array.prototype.map (IE < = 8), используйте the polyfill или библиотеку как sugar.js.

+0

вы были 5s быстрее :-) –

+0

Так легко ... Спасибо. –

3

Попробуйте это:

var array = [10,20,40,-30,-20,50,-60]; 
var absMax = array.reduce(function(max, item){ 
    return Math.max(Math.abs(max),Math.abs(item)); 
}); 
+0

Спасибо, приведенный выше ответ немного более изящный, но ваш дал мне приятный «ага». Еще многое предстоит узнать о JS. –

Смежные вопросы