Czy ktoś może mi powiedzieć, jak wykryć, czy "specialword"
pojawia się w tablicy? Przykład:
categories: [
"specialword"
"word1"
"word2"
]
jQuery oferuje $.inArray
:
Zauważ, że inArray zwraca indeks znalezionego elementu, więc 0
wskazuje, że element jest pierwszym w tablicy. -1
wskazuje, że element nie został znaleziony.
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>
Edycja 3,5 roku później.
$.inArray
jest efektywnie wrapperem dla Array.prototype.indexOf
w przeglądarkach, które to wspierają (prawie wszystkie z nich w dzisiejszych czasach), jednocześnie zapewniając shim w tych, które tego nie robią. Jest to w zasadzie równoważne dodaniu podkładki do Array.prototype
, co jest bardziej idiomatycznym/JSish sposobem robienia rzeczy. MDN dostarcza taki kod. W dzisiejszych czasach skorzystałbym z tej opcji, zamiast używać wrappera 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
Edytuj kolejne 3 lata później
Ojej, 6,5 roku?!
Najlepszą opcją dla tego w nowoczesnym Javascript jest Array.prototype.includes
:
var found = categories.includes('specialword');
Nie ma porównań i nie ma mylących wyników -1
. Robi to, co chcemy: zwraca true
lub false
. Dla starszych przeglądarek jest to'polifillable używając kodu na 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
Proszę bardzo:
$.inArray('specialword', arr)
Funkcja zwraca dodatnią liczbę całkowitą (indeks tablicy podanej wartości), lub -1
jeżeli podana wartość nie została znaleziona w tablicy.
Live demo:
Prawdopodobnie będziesz chciał użyć tego w ten sposób:
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}