배열에 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');
No comparisons and no confusing -1
results. It does what we want: it returns true
or false
. For older browsers it's polyfillable using the code at 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
Here you go:
$.inArray('specialword', arr)
This function returns a positive integer (the array index of the given value), or -1
if the given value was not found in the array.
Live demo: http://jsfiddle.net/simevidas/5Gdfc/
You probably want to use this like so:
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}
You can use a for
loop:
var found = false;
for (var i = 0; i < categories.length && !found; i++) {
if (categories[i] === "specialword") {
found = true;
break;
}
}
I don't like $.inArray(..)
, it's the kind of ugly, jQuery-ish solution that most sane people wouldn't tolerate. Here's a snippet which adds a simple contains(str)
method to your arsenal:
$.fn.contains = function (target) {
var result = null;
$(this).each(function (index, item) {
if (item === target) {
result = item;
}
});
return result ? result : false;
}
Similarly, you could wrap $.inArray
in an extension:
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}
'Development Tip' 카테고리의 다른 글
Linux, Bash의 Epoch 이후 현재 시간을 초 단위로 가져옵니다. (0) | 2020.10.03 |
---|---|
Node.js로 명령 줄 바이너리 실행 (0) | 2020.10.03 |
Python 3의 상대적 가져 오기 (0) | 2020.10.03 |
Math.round (0.49999999999999994)가 1을 반환하는 이유는 무엇입니까? (0) | 2020.10.03 |
Visual Studio의 출력 창에 쓰기 (0) | 2020.10.03 |