Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как ограничить число диапазоном

Короткий ответ

Math.max() поднимает число до минимума, а Math.min() опускает до максимума:

const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
 
console.log(clamp(150, 0, 100));
console.log(clamp(-5, 0, 100));
console.log(clamp(42, 0, 100));

Результат:

100
0
42

По кругу

Иногда значение должно идти по кругу, как номера слайдов в галерее. Поможет остаток от деления:

const count = 5;
const wrap = (index) => ((index % count) + count) % count;
 
console.log(wrap(5), wrap(-1), wrap(7));

Результат:

0 4 2

Частая ошибка

Порядок важен: если перепутать min и max в формуле, результатом всегда будет минимум:

const wrongClamp = (value, min, max) => Math.max(Math.min(value, min), max);
 
console.log(wrongClamp(50, 0, 100));

Результат:

100

Функции из этого ответа

  • Math.min — Возвращает наименьшее из переданных чисел.
  • Math.max — Возвращает наибольшее из чисел.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.