JavaScript / jQuery에서 배열에 특정 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까? [복제]
이 질문에는 이미 답변이 있습니다.
누군가 "specialword"
배열에 나타나는지 감지하는 방법을 말해 줄 수 있습니까 ? 예:
categories: [
"specialword"
"word1"
"word2"
]
이를 위해 실제로 jQuery가 필요하지 않습니다.
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);
힌트 : indexOf는 지정된 검색 값이 처음으로 발생하는 위치를 나타내는 숫자를 반환하거나 절대로 발생하지 않으면 -1을 반환합니다.
또는
function arrayContains(needle, arrhaystack)
{
return (arrhaystack.indexOf(needle) > -1);
}
그 지적이의 가치가 array.indexOf(..)
있다 IE <9에서 지원되지 않습니다 ,하지만 jQuery의 indexOf(...)
기능은 심지어 이전 버전에 대한 작동합니다.
jQuery는 다음을 제공합니다 $.inArray
.
inArray는 발견 된 요소의 색인을 리턴하므로 0
요소가 배열에서 첫 번째임을 나타냅니다. -1
요소를 찾을 수 없음을 나타냅니다.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;
console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
3.5 년 후 수정
$.inArray
효과적으로 Array.prototype.indexOf
지원하지 않는 브라우저에 shim을 제공하면서 브라우저를 지원하는 브라우저 (거의 대부분은 요즘 대부분) 의 래퍼입니다 . 이는 shim을 추가하는 것과 본질적으로 동일하며 Array.prototype
이는 작업을 수행하는 관용적 / JSish 방식입니다. MDN은 그러한 코드를 제공 합니다 . 요즘에는 jQuery 래퍼를 사용하는 대신이 옵션을 사용합니다.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = categoriesPresent.indexOf('specialword') > -1;
var foundNotPresent = categoriesNotPresent.indexOf('specialword') > -1;
console.log(foundPresent, foundNotPresent); // true false
3 년 후 다시 편집
세상에 6.5 년?!
최신 Javascript에서 가장 좋은 옵션은 다음과 Array.prototype.includes
같습니다.
var found = categories.includes('specialword');
비교와 혼란스러운 -1
결과가 없습니다 . 우리가 원하는 것을 수행합니다 : true
또는 false
. 구형 브라우저의 경우 MDN 코드를 사용하여 폴리 필 가능 합니다 .
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = categoriesPresent.includes('specialword');
var foundNotPresent = categoriesNotPresent.includes('specialword');
console.log(foundPresent, foundNotPresent); // true false
여기 있습니다 :
$.inArray('specialword', arr)
이 함수는 양의 정수 (주어진 값의 배열 인덱스)를 반환하거나 -1
주어진 값을 배열에서 찾을 수없는 경우 반환합니다.
라이브 데모 : http://jsfiddle.net/simevidas/5Gdfc/
아마도 이것을 다음과 같이 사용하고 싶을 것입니다.
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}
for
루프 를 사용할 수 있습니다 :
var found = false;
for (var i = 0; i < categories.length && !found; i++) {
if (categories[i] === "specialword") {
found = true;
break;
}
}
나는 마음에 들지 않는다. $.inArray(..)
대부분의 제정신이 아닌 사람들이 견딜 수없는 못생긴 jQuery 솔루션이다. 다음 contains(str)
은 무기고에 간단한 방법을 추가하는 스 니펫입니다 .
$.fn.contains = function (target) {
var result = null;
$(this).each(function (index, item) {
if (item === target) {
result = item;
}
});
return result ? result : false;
}
마찬가지로 $.inArray
확장을 래핑 할 수 있습니다.
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}
'IT story' 카테고리의 다른 글
Linux, Bash의 Epoch 이후 현재 시간 (초)을 가져옵니다. (0) | 2020.02.09 |
---|---|
Node.js로 명령 행 바이너리 실행 (0) | 2020.02.09 |
파이썬 3의 상대적 수입 (0) | 2020.02.09 |
Math.round (0.49999999999999994)가 1을 반환하는 이유는 무엇입니까? (0) | 2020.02.09 |
Visual Studio의 출력 창에 쓰기 (0) | 2020.02.09 |