Development Tip

배열에 JavaScript / jQuery의 특정 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까?

yourdevel 2020. 10. 3. 12:04
반응형

배열에 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);
}

참고URL : https://stackoverflow.com/questions/6116474/how-to-find-if-an-array-contains-a-specific-string-in-javascript-jquery

반응형