[javascript] 값이 숫자 범위 내에 있는지 확인

값이 허용되는 범위에 있는지 확인하고 싶습니다. 그렇다면 무언가를하십시오. 그렇지 않으면 다른 것.

범위는 0.001-0.009입니다. 나는 if이것을 확인 하기 위해 다중을 사용하는 방법을 알고 있지만 단일 if명령문 에서 확인할 방법이 있는지 알고 싶습니다 .



답변

숫자 비교에 대해 질문하고 있으므로 정규 표현식은 실제로 문제와 관련이 없습니다. if이를 수행하기 위해 “다중 “문이 필요하지 않습니다 .

if (x >= 0.001 && x <= 0.009) {
  // something
}

“between ()”함수를 직접 작성할 수 있습니다.

function between(x, min, max) {
  return x >= min && x <= max;
}
// ...
if (between(x, 0.001, 0.009)) {
  // something
}


답변

다음은 단일 비교 옵션입니다.

// return true if in range, otherwise false
function inRange(x, min, max) {
    return ((x-min)*(x-max) <= 0);
}

console.log(inRange(5, 1, 10));     // true
console.log(inRange(-5, 1, 10));    // false
console.log(inRange(20, 1, 10));    // false


답변

당신이 경우 해야한다 regexp와를 사용 (정말, 당신은해야하지!)이 작동합니다 :

/^0\.00([1-8]\d*|90*)$/

작동해야합니다. 즉

  • ^ 전에는 아무것도 없었습니다.
  • 뒤에 0.00(nb : .문자에 대한 백 슬래시 이스케이프 )
  • 그 뒤에 1 ~ 8 및 추가 숫자
  • 또는 9, 임의의 수의 0
  • $: 뒤에 아무것도 없음

답변

이미을 사용하고 있다면 https://lodash.com/docs/4.17.15#inRange 함수를 lodash사용할 수 있습니다 inRange().

_.inRange(3, 2, 4);
// => true

_.inRange(4, 8);
// => true

_.inRange(4, 2);
// => false

_.inRange(2, 2);
// => false

_.inRange(1.2, 2);
// => true

_.inRange(5.2, 4);
// => false

_.inRange(-3, -2, -6);
// => true


답변

저는 Pointy의 between기능을 좋아해서 제 시나리오에 잘 맞는 비슷한 기능을 작성했습니다.

/**
 * Checks if an integer is within ±x another integer.
 * @param {int} op - The integer in question
 * @param {int} target - The integer to compare to
 * @param {int} range - the range ±
 */
function nearInt(op, target, range) {
    return op < target + range && op > target - range;
}

따라서 x± 10 범위 내에 있는지 확인하려면 y:

var x = 100;
var y = 115;
nearInt(x,y,10) = false

모바일에서 길게 누르는 것을 감지하는 데 사용하고 있습니다.

//make sure they haven't moved too much during long press.
if (!nearInt(Last.x,Start.x,5) || !nearInt(Last.y, Start.y,5)) clearTimeout(t);


답변

코드에서 특정 범위의 자릿수를 선택하도록하려면 &&대신 연산자 를 사용해야 합니다 ||.

if (x >= 4 && x <= 9) {
  // do something
} else {
  // do something else
}

// be sure not to do this

if (x >= 4 || x <= 9) {
  // do something
} else {
  // do something else
}


답변

조건을 작성하기 전에 하한과 상한을 결정해야합니다.

function between(value,first,last) {

 let lower = Math.min(first,last) , upper = Math.max(first,last);
 return value >= lower &&  value <= upper ;

}