[javascript] 숫자가 두 값 사이에 있는지 확인하는 방법은 무엇입니까?

JavaScript에서는 창 크기가 500px보다 큰 경우 브라우저에 무언가를 지시합니다. 나는 그렇게한다 :

if (windowsize > 500) {
    // do this
}

이것은 훌륭하게 작동하지만이 동일한 방법을 적용하고 싶지만 범위가 다릅니다. 따라서 창 크기가 500px에서 600px 사이이면 브라우저에 작업을 수행하고 싶습니다. 나는 이것이 효과가 없다는 것을 알고 있지만 여기에 내가 상상 한 방법이 있습니다.

if (windowsize > 500-600) {
    // do this
}

JavaScript 내에서도 가능합니까?



답변

값 이나 그 자체가 조건을 만족 시키지 않을 것이라는 의미 windowsize보다 크 500거나 작은 지 테스트합니다 .600500600

if (windowsize > 500 && windowsize < 600) {
  // ...
}


답변

나는 잠시 시간을 보냈으므로 이미 답변을 수락했지만 다음을 기여할 것이라고 생각했습니다.

Number.prototype.between = function(a, b) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

JS 피들 데모 .

또는 숫자를 확인하는 옵션 이 종료점을 포함하여 정의 된 범위 내에 있는지 확인하려면 다음을 수행하십시오 .

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return inclusive ? this >= min && this <= max : this > min && this < max;
};

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

JS 피들 데모 .

의견에 명시된 바와 같이 위의 내용에 대해 약간의 수정 사항을 추가하도록 수정되었습니다.

Function.prototype.apply()느리다! 고정 된 양의 인수가있을 때 호출하는 것 외에도 의미가 없습니다…

의 사용을 제거 할 가치가 있었으며 Function.prototype.apply(), 이는 먼저 ‘포함’옵션없이 위의 메소드의 수정 된 버전을 생성합니다.

Number.prototype.between = function(a, b) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

JS 피들 데모 .

그리고 ‘포괄적’옵션으로 :

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return inclusive ? this >= min && this <= max : this > min && this < max;
}

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

JS 피들 데모 .

참고 문헌 :


답변

코드가 내 변수의 유효성을 검사하고 범위 값 사이에 있다는 추가 힌트를주기 위해 변수를 내부에 배치하는 것을 선호합니다

if (500 < size && size < 600) { doStuff(); }


답변

그것은 오래된 질문이지만 나와 같은 누군가에게 유용 할 수 있습니다.

lodash보유 _.inRange()기능 https://lodash.com/docs/4.17.4#inRange

예:

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

이 방법은 Lodash유틸리티 라이브러리를 사용하며 설치된 버전의 Lodash에 액세스해야합니다.


답변

if쓰지 않고 여러 절을 조건으로 사용할 수 있습니다

if (windowsize > 500-600) {
    // do this
}

이것은 논리적으로 의미가 없기 때문에 JavaScript는 다음과 같은 if 조건을 읽습니다.

windowSize > -100 

그것은 계산 500-600하기 때문에-100

&&예를 들어 다음과 같이 두 경우를 모두 엄격하게 검사 해야합니다.

if( windowSize > 500 && windowSize < 600 ){

// Then doo something

}


답변

부트 스트랩 모달 값을 표시하고 숨기기 위해이 jQuery 비트를 구현했습니다. 사용자 텍스트 상자 항목의 값 범위에 따라 다른 필드가 표시됩니다.

$(document).ready(function () {
    jQuery.noConflict();
    var Ammount = document.getElementById('Ammount');

    $("#addtocart").click(function () {

            if ($(Ammount).val() >= 250 && $(Ammount).val() <= 499) {
                {
                    $('#myModal').modal();
                    $("#myModalLabelbronze").show();
                    $("#myModalLabelsilver").hide();
                    $("#myModalLabelgold").hide();
                    $("#myModalPbronze").show();
                    $("#myModalPSilver").hide();
                    $("#myModalPGold").hide();
                }
            }
    });


답변

가능한 가장 짧은 방법은 다음과 같습니다.

if (Math.abs(v-550)<50) console.log('short')
if ((v-500)*(v-600)<0) console.log('short')

매개 변수화 :

if (Math.abs(v-max+v-min)<max+min) console.log('short')
if ((v-min)*(v-max)<0) console.log('short')

첫 번째가 어떻게 작동하는지 이해하지 못하면 양쪽을 2로 나눌 수 있습니다.)