Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти минимальное значение из массива (https://javascript.ru/forum/misc/74036-najjti-minimalnoe-znachenie-iz-massiva.html)

Colonelo 07.06.2018 11:12

Найти минимальное значение из массива
 
Есть код:

function min(obj) {
    var a;
    for (var i = 0; i < obj.length; i++) {
        if (obj[i] < obj[0]) {
            a = obj[i];
        }
    }
    return a;
}


Я полагаю что ошибка в ифе и что надо сравнивать со всеми объектами из массива, но не понимаю как это сформулировать.

рони 07.06.2018 11:25

Colonelo,
function min(obj) {
    var a = obj[0];
    for (var i = 1; i < obj.length; i++) {
        if (obj[i] < a) {
            a = obj[i];
        }
    }
    return a;
}

ruslan_mart 07.06.2018 11:31

function min(obj) {
    return Math.min.apply(Math, obj);
}


ES6:
const min = obj => Math.min(...obj);

Colonelo 07.06.2018 11:38

Спасибо за быстрый ответ

Colonelo 07.06.2018 11:57

А как найти второе по величине число из такого же массива?

j0hnik 07.06.2018 12:00

var x = obj.sort((a,b)=> a-b)[1];


дубли не игнорируются

j0hnik 07.06.2018 12:02

var x = obj.filter((v, i, s)=>s.indexOf(v) === i).sort((a,b)=> a-b)[1];


дубли игнорируются

Colonelo 07.06.2018 12:09

А без использования сортировки?

j0hnik 07.06.2018 12:19

var x = Math.min(...obj.filter(el=> el > Math.min(...obj)));

рони 07.06.2018 12:47

Colonelo,
function min(obj) {
    var a = [obj[0]];
    for (var i = 1; i < obj.length; i++) {
        for (var k = 0; k < a.length; k++)
            if (obj[i] < a[k]) break;
        a.splice(k, 0, obj[i])
    }
    return a
}
alert(min([4, 8, 1, 12, -3, 1]));


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