처음 작업 할 jQuery.inArray()
때 좀 이상하게 행동합니다.
객체가 배열에 있으면 0을 반환하지만 Javascript에서는 0이 false입니다. 따라서 다음과 같이 출력됩니다 : “is array in”
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
if 문을 다음과 같이 변경해야합니다.
if(jQuery.inArray("test", myarray)==0)
그러나 이것은 코드를 읽을 수 없게 만듭니다. 특히이 기능을 모르는 사람에게 적합합니다. “test”가 배열에있을 때 jQuery.inArray ( “test”, myarray)가 true를 제공 할 것으로 예상합니다.
그래서 제 질문은 왜 이런 식으로 이루어 집니까? 나는 이것을 정말로 싫어한다. 그러나 그렇게하는 좋은 이유가 있어야합니다.
답변
inArray
항목이 배열에 존재하는지 여부를 나타내는 부울이 아닌 배열의 요소 색인을 반환합니다. 요소를 찾지 못하면 -1
반환됩니다.
따라서 항목이 배열에 있는지 확인하려면 다음을 사용하십시오.
if(jQuery.inArray("test", myarray) !== -1)
답변
$.inArray
발견되면 요소 의 색인 을, 부울 값이 아닌 경우 -1을 리턴합니다 . 그래서 맞습니다
if(jQuery.inArray("test", myarray) != -1) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
답변
답은 결과가 참인지 거짓이 아닌 -1보다 큰지 확인하는 문서 검사의 첫 번째 단락에서 나옵니다.
$ .inArray () 메서드는 일치하는 것을 찾지 못하면 -1을 반환한다는 점에서 JavaScript의 기본 .indexOf () 메서드와 유사합니다. 배열의 첫 번째 요소가 value와 일치하면 $ .inArray ()는 0을 반환합니다.
JavaScript는 0을 느슨하게 false (예 : 0 == false, 0! == false)로 취급하므로 배열 내 값의 존재를 확인하는 경우 값이 같지 않은지 (또는 ) -1.
답변
올바른 사용 방법 inArray(x, arr)
은 전혀 사용하지 않고 대신 사용하는 것 arr.indexOf(x)
입니다.
공식 표준 이름은 반환 된 값이 색인이라는 사실에서 더 명확합니다. 따라서 전달 된 요소가 첫 번째 요소 인 경우 0
(Javascript에서 거짓) 반환됩니다.
(주 arr.indexOf(x)
되는 IE9까지 Internet Explorer에서 지원되지 않습니다 , 그래서 당신은 이전에 IE8을 지원해야하는 경우,이하지 않습니다 작업 및 jQuery를 기능이 더 나은 대안입니다.)
답변
또는 약간 공상을 얻으려면 비트 단위 not (~) 및 논리 not (!) 연산자를 사용하여 inArray 함수의 결과를 부울 값으로 변환 할 수 있습니다.
if(!!~jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
답변
나는 보통
if(!(jQuery.inArray("test", myarray) < 0))
또는
if(jQuery.inArray("test", myarray) >= 0)
답변
jQuery inArray () 메소드는 배열에서 값을 검색하고 부울 값이 아닌 색인을 리턴하는 데 사용됩니다. 그리고 값을 찾지 못하면 -1을 반환합니다.
따라서 배열에 값이 있는지 확인하려면 아래 연습을 따르십시오.
myArray = new Array("php", "tutor");
if( $.inArray("php", myArray) !== -1 ) {
alert("found");
}