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 0
geeft aan dat het element het eerste in de array is. -1
geeft 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 -1
als 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 $.inArray
in een extensie plaatsen:
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}