метод массива выявляющий минимальное число кроме отрицательных чисел js
Необходимо вывести минимальное, не отрицательное число массива. В данном случае цифру 1.
Плюсом будет еще и вывести индекс под которым находятся минимальные значения.
При этом индекс массива должен начинаться не с "0" а с "1".
Короче вывести минимальное число ${number}, под ${index}.
const arr = [8, 1, 1, 3, 2, -1, 5]
Как в этом случае лучше поступить?
Было бы не плохо, чтобы этот код был еще и лаконичным.
Ответы (2 шт):
Автор решения: ksa
→ Ссылка
Было бы не плохо, чтобы этот код был еще и лаконичным.
Ну не знаю... Достаточно лаконично?
const arr = [8, 1, 1, 3, 2, -1, 5]
const o = arr.reduce((o, v, i) => v < 0? o: v < o.v? {v, i: ++i}: o, {v: Infinity, i: null})
const txt = `${o.v}, под ${o.i}`
console.log(txt)
Автор решения: SwaD
→ Ссылка
Один из вариантов. Вернет первый минимальный элемент
const arr = [8, -2, 1, 1, 3, 2, -1, 5];
function minNum(data) {
let min = Infinity;
let idx = -1;
data.forEach((item, index) => {
if (item > 0 && min > item) {
min = item;
idx = index;
}
})
return [min, idx + 1];
}
const minimum = minNum(arr);
console.log(`${minimum[0]}, под ${minimum[1]}`)
Такой же, но немного оптимизированный вариант. Как только будет найден минимальный номер(1 в нашем случае), цикл прекратит работу и вернет результат.
const arr = [8, -2, 1, 1, 3, 2, -1, 5];
function minFor(data) {
let min = Infinity;
let idx = -1;
for (let i = 0; i < data.length; i++) {
if (data[i] > 0 && min > data[i]) {
min = data[i];
idx = i;
if (min === 1) return [min, idx + 1];
}
}
}
const minimum3 = minFor(arr);
console.log(`${minimum3[0]}, под ${minimum3[1]}`)