Program Club

최소 / 최대 값 사이의 숫자를 제한하기 위해 JavaScript를 어떻게 사용할 수 있습니까?

proclub 2020. 12. 29. 07:32
반응형

최소 / 최대 값 사이의 숫자를 제한하기 위해 JavaScript를 어떻게 사용할 수 있습니까?


두 값 사이의 숫자를 제한하고 싶습니다. PHP에서 다음과 같이 할 수 있습니다.

$number = min(max(intval($number), 1), 20);
// this will make $number 1 if it's lower than 1, and 20 if it's higher than 20

여러 if문장 을 작성하지 않고도 자바 스크립트에서 어떻게 할 수 있습니까? 감사.


이렇게

var number = Math.min(Math.max(parseInt(number), 1), 20);

최소한 두 가지 옵션이 있습니다.

한 쌍의 조건부 연산자 ( ? :)를 사용할 수 있습니다 .

number = number > 100 ? 100 : number < 0 ? 0 : number;

또는 다음 Math.maxMath.min같이 결합 할 수 있습니다 .

number = Math.min(100, Math.max(0, number));

두 경우 모두 자신을 혼동하기가 비교적 쉽기 때문에 여러 곳에서이 작업을 수행하는 경우 유틸리티 기능을 고려할 수 있습니다.

function clamp(val, min, max) {
    return val > max ? max : val < min ? min : val;
}

그때:

number = clamp(number, 0, 100);

lodash의 클램프 방법 사용 :

_.clamp(22, 1, 20) // Outputs 20


추가 설명이 필요하지 않습니다.

function clamp(value, min, max) {
    return Math.min(Math.max(value, min), max);
}

사용 Math.min하고 Math.max.


관련성 : 숫자를 세그먼트로 제한하는 가장 우아한 방법은 무엇입니까? :

ECMAScript 2017 업데이트 :

Math.clamp(x, lower, upper)

그러나 오늘 현재는 1 단계 제안 입니다. 널리 지원되기 전까지는 polyfill을 사용할 수 있습니다 .

참조 URL : https://stackoverflow.com/questions/5842747/how-can-i-use-javascript-to-limit-a-number-between-a-min-max-value

반응형