Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с массивами, help! (https://javascript.ru/forum/misc/61031-rabota-s-massivami-help.html)

tvv90 01.02.2016 15:48

Работа с массивами, help!
 
Функция, которая принимает массив числовых значений, вычисляет и возвращает самый большой элемент массива после максимального. На пример, для массива [1, 2, 3, 4, 5, 5] это будет 4.:help:

destus 01.02.2016 16:01

Math.max и array.splice в помощь

tsigel 01.02.2016 16:01

alert([1, 2, 3, 4, 5, 5].reduce(function (result, item) {
    if (item > result.max) {
        result.last = result.max;
        result.max = item;
    }
    return result;
}, {max: 0, last: 0}).last);

рони 01.02.2016 16:15

:) мне интересно почему 4 когда нет элемента после максимального в этом массиве [1, 2, 3, 4, 5, 5]пусто тут

destus 01.02.2016 16:19

Цитата:

Сообщение от рони (Сообщение 405911)
:) мне интересно почему 4 когда нет элемента после максимального в этом массиве [1, 2, 3, 4, 5, 5]пусто тут

Имелось ввиду второй по максимальности (уникальный) :)

tvv90 01.02.2016 16:24

Имеется ввиду, из чисел ну например [1, 1, 5, 5] большее после максимального будет 1. Или среди [-1, -2, -5, -25, -125] большим после максимального будет -2

рони 01.02.2016 16:26

destus,
:) ok

рони 01.02.2016 16:53

tvv90,
function fn(a) {
    a = a.slice().sort(function(a, b) {
        return a - b
    });
    return a[a.indexOf(Math.max.apply(null, a))-1]
};
 alert( fn([-1, -2, -5, -25, -125]) );  //-2
 alert( fn([1, 1, 5, 5]) );  //1
 alert( fn([1, 2, 3, 4, 5, 5]) );  //4

tvv90 01.02.2016 17:02

Цитата:

Сообщение от рони (Сообщение 405920)
tvv90,
function fn(a) {
    a = a.slice().sort(function(a, b) {
        return a - b
    });
    return a[a.indexOf(Math.max.apply(null, a))-1]
};
 alert( fn([-1, -2, -5, -25, -125]) );  //-2
 alert( fn([1, 1, 5, 5]) );  //1
 alert( fn([1, 2, 3, 4, 5, 5]) );  //4

Отлично. Респект тебе дружище! Все работает:)

tvv90 01.02.2016 17:03

Всем остальным также thanks!


Часовой пояс GMT +3, время: 20:54.