Hoe kom ik erachter of een array een specifieke string bevat in JavaScript/jQuery?

Kan iemand me vertellen hoe ik kan detecteren of "specialword"in een array voorkomt? Voorbeeld:

categories: [
    "specialword"
    "word1"
    "word2"
]

Antwoord 1, autoriteit 100%

Hier heb je echt geen jQuery voor nodig.

var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);

Hint: indexOf retourneert een getal, dat de positie vertegenwoordigt waar de opgegeven zoekwaarde voor het eerst voorkomt, of -1 als het nooit
komt voor

of

function arrayContains(needle, arrhaystack)
{
    return (arrhaystack.indexOf(needle) > -1);
}

Het is vermeldenswaard dat array.indexOf(..)niet ondersteund in IE < 9, maar de functie indexOf(...)van jQuery werkt zelfs voor die oudere versies.


Antwoord 2, autoriteit 62%

jQuery biedt $.inArray:

Merk op dat inArray de index van het gevonden element retourneert, dus 0geeft aan dat het element het eerste in de array is. -1geeft aan dat het element niet is gevonden.


Antwoord 3, autoriteit 3%

Alsjeblieft:

$.inArray('specialword', arr)

Deze functie retourneert een positief geheel getal (de array-index van de gegeven waarde), of -1als de gegeven waarde niet in de array is gevonden.

Live demo:http://jsfiddle.net/simevidas/5Gdfc/

U wilt dit waarschijnlijk als volgt gebruiken:

if ( $.inArray('specialword', arr) > -1 ) {
    // the value is in the array
}

Antwoord 4, autoriteit 2%

U kunt een for-lus gebruiken:

var found = false;
for (var i = 0; i < categories.length && !found; i++) {
  if (categories[i] === "specialword") {
    found = true;
    break;
  }
}

Antwoord 5

Ik hou niet van $.inArray(..), het is het soort lelijke, jQuery-achtige oplossing die de meeste verstandige mensen niet zouden tolereren. Hier is een fragment dat een eenvoudige contains(str)-methode aan je arsenaal toevoegt:

$.fn.contains = function (target) {
  var result = null;
  $(this).each(function (index, item) {
    if (item === target) {
      result = item;
    }
  });
  return result ? result : false;
}

Op dezelfde manier kunt u $.inArrayin een extensie plaatsen:

$.fn.contains = function (target) {
  return ($.inArray(target, this) > -1);
}

Other episodes