Pierwszy raz pracuję jQuery.inArray()
i to działa trochę dziwnie.
Jeśli obiekt znajduje się w tablicy, zwróci 0, ale 0 w kodzie JavaScript jest fałszywe. Więc wypisane zostaną: „NIE jest w tablicy”
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
Będę musiał zmienić instrukcję if na:
if(jQuery.inArray("test", myarray)==0)
Ale to sprawia, że kod jest nieczytelny. Zwłaszcza dla kogoś, kto nie zna tej funkcji. Spodziewają się, że jQuery.inArray („test”, moja tablica) daje wartość true, gdy „test” znajduje się w tablicy.
Więc moje pytanie brzmi: dlaczego tak się dzieje? Naprawdę nie lubię tego. Ale musi być dobry powód, aby zrobić to w ten sposób.
źródło
if jQuery.inArray('test', myarray) isn't -1
$.isInArray = function(test,array) { return $.inArray(test, array) !== -1; };
$.isInArray = function(item, array) { return !!~$.inArray(item, array); };
(Chciałbym zachować taki tajemniczy kod w dobrze nazwanej funkcji, aby zachować jasność intencji :))if( $.inArray(test, array) > -1) { // do stuff }
$.inArray
zwraca indeks elementu, jeśli został znaleziony, lub -1, jeśli nie jest - nie jest wartością logiczną. Więc poprawne jestźródło
Odpowiedź pochodzi z pierwszego akapitu sprawdzania dokumentacji, czy wyniki są większe niż -1, a nie, czy jest to prawda czy fałsz.
źródło
Właściwym sposobem korzystania
inArray(x, arr)
jest wcale nie używanie go , a używanie zamiast niegoarr.indexOf(x)
.Oficjalna standardowa nazwa jest również bardziej wyraźna w fakcie, że zwrócona wartość jest indeksem, więc jeśli przekazany element jest pierwszym, otrzymasz go
0
(to jest fałsz w JavaScript).(Uwaga: nie
arr.indexOf(x)
jest obsługiwany w przeglądarce Internet Explorer do wersji IE9 , więc jeśli potrzebujesz obsługi IE8 i wcześniejszych wersji, nie będzie to działać, a funkcja jQuery jest lepszą alternatywą).źródło
$.inArray
użyłem na początku jakiegoś kodu, musiałem naprawić błąd, jęczę. W każdym razie powinna to być zaakceptowana odpowiedź.Lub jeśli chcesz uzyskać odrobinę fantazji, możesz użyć bitowych operatorów not (~) i logicznych not (!), Aby przekonwertować wynik funkcji inArray na wartość boolowską.
źródło
Zwykle używam
lub
źródło
if( $.inArray("test", myarray) > -1 )
Metoda jQuery inArray () służy do wyszukiwania wartości w tablicy i zwracania jej indeksu, a nie wartości logicznej. A jeśli wartość nie zostanie znaleziona, zwróci -1.
Aby sprawdzić, czy wartość jest obecna w tablicy, postępuj zgodnie z poniższą praktyką:
Odniesienie
źródło
inArray
Zwraca wskaźnik obiektu podany jako pierwszy argument funkcji w tablicy dostarczanego jako drugi argument funkcji.Kiedy
inArray
zwraca0
, oznacza to, że pierwszy argument został znaleziony na pierwszej pozycji dostarczonej tablicy.Aby użyć
inArray
w instrukcji if użyj:inArray
zwraca,-1
gdy pierwszy argument przekazany do funkcji nie zostanie znaleziony w tablicy przekazanej jako drugi argument.źródło
zamiast używać
jQuery.inArray()
możesz również użyćincludes
metody dla tablicy int:sprawdź oficjalny post tutaj
źródło
jQuery.inArray () zwraca indeks elementu w tablicy lub -1, jeśli element nie został znaleziony. Przeczytaj więcej tutaj: jQuery.inArray ()
źródło
Zwróci indeks elementu w tablicy. Jeśli nie zostanie znaleziony, otrzymasz
-1
źródło
Jeśli chcemy sprawdzić, czy element znajduje się w zestawie elementów, możemy na przykład:
źródło
Jest to przydatne do sprawdzania zmiennych dynamicznych. Ta metoda jest łatwa do odczytania.
źródło
$.inArray()
robi DOKŁADNĄ TĄ SAMĄ RZECZY jakmyarray.indexOf()
i zwraca indeks elementu, który sprawdzasz w tablicy pod kątem istnienia. Jest po prostu kompatybilny z wcześniejszymi wersjami IE przed IE9. Najlepszym wyborem jest prawdopodobnie użycie,myarray.includes()
które zwraca logiczną wartość prawda / fałsz. Zobacz fragment kodu poniżej, aby uzyskać przykłady wszystkich 3 metod.źródło
$.inArray
powinien być złotym standardem, jeśli masz dostęp do biblioteki jQuery. W przeciwnym razie.indexOf
należy użyć JavaScript z polifillem dla IE8. Trzymaj się z dala od takich nowoczesnych rzeczy jak.includes()
.Człowieku, sprawdź dokument .
na przykład:
źródło
Z jakiegoś powodu, gdy próbujesz sprawdzić element DOM jquery, nie będzie działał poprawnie. Więc przepisanie funkcji by załatwiło sprawę:
źródło
źródło
Po prostu nikt nie używa
$
zamiastjQuery
:źródło
$
zamiastjQuery
.najkrótsza i najprostsza droga to.
źródło