Jak uzyskać pierwszy element z tablicy takiej jak ta:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Próbowałem tego:
alert($(ary).first());
Ale wróci [object Object]
. Muszę więc pobrać pierwszy element z tablicy, który powinien być elementem 'first'
.
javascript
jquery
arrays
MacMac
źródło
źródło
Odpowiedzi:
lubię to
źródło
var a = []; a[7] = 'foo'; alert(a[0]);
Dlaczego jQuery-ifying waniliową tablicę JavaScript? Użyj standardowego JavaScript!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Również,
Źródło , dzięki uprzejmości bobince
źródło
Kilka sposobów poniżej dla różnych okoliczności.
W większości normalnych przypadków najprostszym sposobem uzyskania dostępu do pierwszego elementu jest
ale wymaga to sprawdzenia, czy [0] faktycznie istnieje.
Istnieją przypadki ze świata rzeczywistego, w których nie przejmujesz się oryginalną tablicą i nie chcesz sprawdzać, czy istnieje indeks, chcesz tylko uzyskać pierwszy element lub nieokreślone wstawienie.
W takim przypadku można użyć metody shift () , aby uzyskać pierwszy element, ale należy zachować ostrożność, aby ta metoda modyfikowała oryginalną tablicę (usuwa pierwszy element i zwraca go). Dlatego długość tablicy jest zmniejszona o jeden. Tej metody można użyć w przypadkach inline, w których wystarczy zdobyć pierwszy element, ale nie zależy Ci na oryginalnej tablicy.
Ważne jest, aby wiedzieć, że dwa powyższe są opcją tylko, jeśli tablica zaczyna się od indeksu [0].
Są przypadki, w których pierwszy element został usunięty, na przykład za pomocą, delete yourArray [0] pozostawiając tablicę z „dziurami”. Teraz element w [0] jest po prostu niezdefiniowany, ale chcesz uzyskać pierwszy „istniejący” element. Widziałem wiele takich przypadków w świecie rzeczywistym.
Zakładając, że nie znamy tablicy i pierwszego klucza (lub wiemy, że są dziury), nadal możemy uzyskać pierwszy element.
Możesz użyć find (), aby uzyskać pierwszy element.
Zaletą find () jest jego wydajność, gdy wychodzi ona z pętli, gdy osiągnięta zostanie pierwsza wartość spełniająca warunek (więcej na ten temat poniżej). (Możesz dostosować warunek, aby wykluczyć null lub inne puste wartości)
Chciałbym również dołączyć tutaj funkcję filter () , aby najpierw „naprawić” tablicę w kopii, a następnie uzyskać pierwszy element, zachowując nienaruszoną oryginalną tablicę (niezmodyfikowaną).
Innym powodem włączenia filtra () jest to, że istniało ono przed find () i wielu programistów już go używało (jest to ES5 przeciwko find () będącym ES6).
Ostrzeżenie, że filter () nie jest tak naprawdę skutecznym sposobem (filter () przechodzi przez wszystkie elementy) i tworzy kolejną tablicę. Można stosować na małych tablicach, ponieważ wpływ na wydajność byłby marginalny, bliższy na przykład do użycia forEach.
(Widzę, że niektórzy sugerują użycie pętli for ... w celu uzyskania pierwszego elementu, ale odradzam tę metodę dla ... in nie należy używać do iteracji w tablicy, w której kolejność indeksów jest ważna, ponieważ nie t gwarantuje kolejność, chociaż można argumentować, że przeglądarki w większości szanują kolejność. Nawiasem mówiąc, forEach nie rozwiązuje problemu, jak wielu sugeruje, ponieważ nie można go złamać i przejdzie przez wszystkie elementy. Lepiej byłoby użyć prostego dla zapętlić i sprawdzając klucz / wartość
Zarówno find (), jak i filter () gwarantują kolejność elementów, więc można z nich bezpiecznie korzystać jak wyżej.
źródło
yourArray.map(n=>n).shift()
go użyjesz , zwróci pierwszy element bez modyfikacji oryginału ... nie wiem, czy to najlepszy sposób, ale jeśli połączysz tablicę za pomocą .map (). Filter (). Some (). Shift () jest w porządku .. inaczejyourArray[0]
Element o indeksie 0 może nie istnieć, jeśli pierwszy element został usunięty:
Lepszy sposób na zdobycie pierwszego elementu bez jQuery:
źródło
Wykorzystanie restrukturyzacji ES6
Który jest taki sam jak
źródło
Jeśli chcesz zachować czytelność , zawsze możesz dodać pierwszą funkcję do
Array.protoype
:Następnie możesz łatwo pobrać pierwszy element:
źródło
.first()
lepsze niż robienie[0]
?1
.first
w tym przypadku jest jednoznaczny.Możesz po prostu użyć
find()
:Lub jeśli chcesz pierwszy element, nawet jeśli jest to fałsz :
Idąc o krok dalej:
Jeśli dbasz o czytelność, ale nie chcą polegać na zachorowań numerycznych można dodać
first()
-function doArray.protoype
definiując jąObject.defineProperty()
który łagodzi pułapek modyfikowanie wbudowanego obiektu Array prototypu bezpośrednio ( wyjaśnione tutaj ).Wydajność jest całkiem dobra (
find()
zatrzymuje się po pierwszym elemencie), ale nie jest idealna ani powszechnie dostępna (tylko ES6). Aby uzyskać więcej tła, przeczytaj odpowiedź @Selays .Następnie, aby pobrać pierwszy element, możesz:
Fragment, aby zobaczyć go w akcji:
źródło
find()
?find()
od dawna jest częścią tego języka. To jest powód, dla którego powyższy fragment kodu działa.first()
Jeśli nie ma gwarancji, że twoja tablica zostanie wypełniona od zera, możesz użyć
Array.prototype.find()
:źródło
!!element
Odradzam używanie, ponieważ pominie ono wartości fałszu. Polecam użyciefind()
w ten sposób:sparse.find((_, index, array) => index in array);
ponieważ „znajdź” zwraca pierwszy element pasujący do filtra, a &
!!e
pasuje do dowolnego elementu.Uwaga ta działa tylko wtedy, gdy pierwszy element nie jest „Falsy”:
null
,false
,NaN
,""
,0
,undefined
źródło
array.find(() => true);
? To pozwala ci[false].find(() => true)
również..find(value => true)
działa po prostu zgodnie z oczekiwaniami… ale szczerze, jeśli chcesz czystszego kodu i zachować pisanie na maszynie, użyj destrukcji .Spróbować
alert(ary[0]);
.źródło
Tylko w przypadku korzystania z underscore.js ( http://underscorejs.org/ ) możesz:
źródło
Wiem, że ludzie, którzy pochodzą z innych języków na JavaScript, szukają czegoś podobnego
head()
lubfirst()
pierwszego elementu tablicy, ale jak to zrobić?Wyobraź sobie, że masz tablicę poniżej:
W JavaScript możesz po prostu zrobić:
lub nowszy, nowszy sposób to:
Ale możesz też po prostu napisać funkcję taką jak ...
Jeśli używasz podkreślenia, istnieje lista funkcji wykonujących to samo, czego szukasz:
źródło
Metoda, która działa z tablicami i działa również z obiektami (uwaga, obiekty nie mają gwarantowanej kolejności!).
Najbardziej preferuję tę metodę, ponieważ oryginalna tablica nie jest modyfikowana.
źródło
W wersji ES2015 i nowszych przy użyciu restrukturyzacji tablic:
źródło
Kolejny dla tych, którzy zajmują się tylko prawdą
źródło
Znajdź pierwszy element w tablicy za pomocą filtra:
W maszynopisie:
Prostym javascript:
I podobnie indexOf:
W maszynopisie:
Prostym javascript:
źródło
Gdy występuje wiele dopasowań, do pobrania pierwszego elementu DOM pasującego do selektora css podanego dla jquery używana jest funkcja .first () JQuery'ego.
Nie potrzebujesz jQuery do manipulowania tablicami javascript.
źródło
Dlaczego nie uwzględnić czasów, w których tablica może być pusta?
źródło
Po prostu użyj
ary.slice(0,1).pop();
W
array.slice (START, END) .pop ();
źródło
ary[0]
?Możesz także użyć .get (0):
Aby uzyskać pierwszy element tablicy.
źródło
Użyj tego, aby podzielić znak w javascript.
źródło
Poprzednie przykłady działają dobrze, gdy indeks tablicy zaczyna się od zera. Odpowiedź Thomaxa nie polegała na indeksie rozpoczynającym się od zera, ale polegała na tym,
Array.prototype.find
do czego nie miałem dostępu. Poniższe rozwiązanie z użyciem jQuery $ .each działało dobrze w moim przypadku.źródło
Możesz to zrobić tak łatwo przez lodash
_.head
.źródło
arr[0]
jak widać tutaj, dlatego zdecydowanie odradzam korzystanie z gigantycznej biblioteki, takiej jak lodash, do tak małego zadania.źródło
@NicoLwk Powinieneś usunąć elementy ze splajnem, które cofną twoją tablicę. Więc:
źródło
Zadeklaruj prototyp do zdobycia pierwszy element tablicy jako:
Następnie użyj go jako:
Lub po prostu (:
źródło
Jeśli łączysz funkcje widoku z tablicą, np
array.map(i => i+1).filter(i => i > 3)
I chcesz pierwszy element po tych funkcjach, możesz po prostu dodać,
.shift()
że nie modyfikuje oryginałuarray
, jest to więc lepszy sposóbarray.map(i => i+1).filter(=> i > 3)[0]
Jeśli chcesz pierwszego elementu tablicy bez modyfikowania oryginału, możesz użyć
array[0]
lubarray.map(n=>n).shift()
(bez mapy zmodyfikujesz oryginał. W tym przypadku btw sugerowałbym..[0]
wersję.źródło
Utwórz dowolną tablicę Object (
req
), a następnie po prostu zróbObject.keys(req)[0]
pierwszy klucz w tablicy Object.źródło
Odpowiedź @thomax jest całkiem dobra, ale zawiedzie, jeśli pierwszy element w tablicy ma wartość false lub false-y (0, pusty ciąg itp.). Lepiej po prostu zwrócić wartość true dla czegoś innego niż niezdefiniowany:
źródło
ES6 easy:
źródło
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
nie odrzuca żadnych wartości. Mimo to nie polecam używania polecenia Znajdź, aby zdobyć pierwszy przedmiot.