programing

Javascript 배열의 값 테스트

nasanasas 2020. 12. 15. 19:23
반응형

Javascript 배열의 값 테스트


SQL Server에서는 다음과 같이 말할 수 있습니다.

WHERE X IN(1,2)

JavaScript에서 다음을 어떻게 다시 작성 하시겠습니까?

if (X==1 || X==2) {}

배열에 indexOf있는지 확인하는 데 사용 합니다 x.

if([1,2].indexOf(x) !== -1)

배열 .includes방법 사용 .

if ([1, 2].includes(x)) {
  // array has x
}

배열을 사용한 다음 .indexOf().

 var myNumbers = [1,2];
 var foo = 4;
 var bar = 1;

 var exists = (myNumbers.indexOf(bar) > -1); //true
 var notExists = (myNumbers.indexOf(foo) > -1); //false

은색 총알이 없습니다. 몇 가지 문제가있을 것입니다.

indexOf일부 답변에서 제안한대로 수행 하는 경우 Array.indexOf모든 브라우저에서 지원되지 않으므로 자체 대체를 제공해야합니다. 또한 이것은 O(n)전체 배열을 통과해야하기 때문에 성능을 갖습니다 . 거대한 배열을 다루는 경우 이상적이지 않을 수 있습니다.

in다른 답변에서 제안하는 것처럼 연산자 를 사용하는 경우 Javascript 객체의 속성은 항상 문자열이라는 것을 기억해야하므로 ===숫자를 확인하는 경우 검사가 작동 하지 않을 것으로 기대하지 마십시오 .

당신이 제안한이 특정한 예에서, 나는 단지 좋은 오래된 것을 갈 것 if (X==1 || X==2)입니다.


if (x in {1:true, 2:true}) { }

또는 추상화하고 싶다면 http://snook.ca/archives/javascript/testing_for_a_v 와 같이 할 수 있습니다 .

function oc (a) {var o = {}; for (var i = 0; i

여전히 ... 가장 확장 가능한 일이 아닙니다.


Javascript 1.6 필요

if ((new Array(1, 2)).indexOf(X) != -1) {
}

PHP에 in_array () 함수가 있다는 것을 알고 있지만 JS에서 비슷한 함수를 들어 본 적이 없습니다. 나는 당신이 그것을 옛날 방식으로해야한다고 생각합니다.

함수 contains (a, obj) {
  var i = a.length;
  while (i--) {
    if (a [i] === obj) {
      true를 반환하십시오.
    }
  }
  거짓 반환;
}

배열을 객체 리터럴로 변환하는 함수

function oc(a)
{
 var o = {};
 for(var i=0;i<a.length;i++)
 {
  o[a[i]]='';
 }
  return o;
}

다음과 같이 함수를 호출 할 수 있습니다.

if( name in oc(['Tom', 'Harry','Sue']) ) { ... }

그냥 재미 :

if (X*X+1*2 == (1+2)*X) {}

또는 자기 설명 :

if ((X-1)*(X-2) == 0) {}

참조 URL : https://stackoverflow.com/questions/5252650/test-for-value-in-javascript-array

반응형