Wie erhält man das erste Element aus einem Array wie diesem:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Ich habe es versucht:
alert($(ary).first());
Aber es würde zurückkehren [object Object]
. Also muss ich das erste Element aus dem Array holen, das das Element sein sollte 'first'
.
javascript
jquery
arrays
MacMac
quelle
quelle
Antworten:
so was
quelle
var a = []; a[7] = 'foo'; alert(a[0]);
Warum jQuery-ifying Sie ein Vanille-JavaScript-Array? Verwenden Sie Standard-JavaScript!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Ebenfalls,
Quelle mit freundlicher Genehmigung von Bobince
quelle
Einige der folgenden Möglichkeiten für verschiedene Umstände.
In den meisten normalen Fällen ist der einfachste Weg, auf das erste Element zuzugreifen, der von
Dazu müssen Sie jedoch überprüfen, ob [0] tatsächlich vorhanden ist.
Es gibt Fälle in der realen Welt, in denen Sie sich nicht für das ursprüngliche Array interessieren und nicht überprüfen möchten, ob ein Index vorhanden ist. Sie möchten nur das erste Element oder eine undefinierte Inline erhalten.
In diesem Fall können Sie die Methode shift () verwenden, um das erste Element abzurufen. Beachten Sie jedoch, dass diese Methode das ursprüngliche Array ändert (entfernt das erste Element und gibt es zurück). Daher wird die Länge eines Arrays um eins reduziert. Diese Methode kann in Inline-Fällen verwendet werden, in denen Sie nur das erste Element abrufen müssen, sich aber nicht um das ursprüngliche Array kümmern.
Wichtig zu wissen ist, dass die beiden oben genannten nur dann eine Option sind, wenn Ihr Array mit einem [0] -Index beginnt.
Es gibt Fälle, in denen das erste Element gelöscht wurde, z. B. mit delete yourArray [0], wobei Ihr Array mit "Löchern" belassen wird. Jetzt ist das Element bei [0] einfach undefiniert, aber Sie möchten das erste "vorhandene" Element erhalten. Ich habe viele reale Fälle davon gesehen.
Vorausgesetzt, wir kennen das Array und den ersten Schlüssel nicht (oder wir wissen, dass es Löcher gibt), können wir trotzdem das erste Element erhalten.
Sie können find () verwenden , um das erste Element abzurufen.
Der Vorteil von find () ist seine Effizienz, wenn es die Schleife verlässt, wenn der erste Wert erreicht ist, der die Bedingung erfüllt (mehr dazu weiter unten). (Sie können die Bedingung so anpassen, dass auch null oder andere leere Werte ausgeschlossen werden.)
Ich möchte hier auch filter () als Option einfügen, um zuerst das Array in der Kopie zu "reparieren" und dann das erste Element zu erhalten, während das ursprüngliche Array intakt bleibt (unverändert).
Ein weiterer Grund, filter () hier aufzunehmen, ist, dass es vor find () existierte und viele Programmierer es bereits verwendet haben (es ist ES5 gegen find () als ES6).
Warnung, dass filter () nicht wirklich effizient ist (filter () durchläuft alle Elemente) und ein anderes Array erstellt. Die Verwendung auf kleinen Arrays ist in Ordnung, da die Auswirkungen auf die Leistung gering wären, beispielsweise näher an der Verwendung von forEach.
(Ich sehe, dass einige Leute vorschlagen, for ... in loop zu verwenden, um das erste Element zu erhalten, aber ich würde gegen diese Methode empfehlen, da ... in nicht verwendet werden sollte, um über ein Array zu iterieren, bei dem die Indexreihenfolge wichtig ist, weil dies nicht der Fall ist. ' t garantieren die Reihenfolge, obwohl Sie argumentieren können, dass Browser die Reihenfolge meistens respektieren. Übrigens löst forEach das Problem nicht so, wie viele vorschlagen, weil Sie es nicht brechen können und es alle Elemente durchläuft. Sie sollten besser ein einfaches für verwenden Schleife und durch Überprüfen von Schlüssel / Wert
Sowohl find () als auch filter () garantieren die Reihenfolge der Elemente und können daher wie oben beschrieben sicher verwendet werden.
quelle
yourArray.map(n=>n).shift()
, wird das erste Element zurückgegeben, ohne das Original zu ändern. Sie wissen nicht, ob dies der beste Weg ist, aber wenn Sie ein Array mit .map (). Filter (). Some (). Shift () verketten, ist dies in Ordnung .. sonst würde ich verwendenyourArray[0]
Element mit Index 0 ist möglicherweise nicht vorhanden, wenn das erste Element gelöscht wurde:
Besserer Weg, um das erste Element ohne jQuery zu erhalten:
quelle
Verwenden der ES6-Destrukturierung
Welches ist das gleiche wie
quelle
Wenn Sie die Lesbarkeit erhalten möchten, können Sie jederzeit eine erste Funktion hinzufügen
Array.protoype
:Dann können Sie leicht das erste Element abrufen:
quelle
.first()
besser als tun[0]
?1
.first
ist in diesem Fall eindeutig.Sie können einfach verwenden
find()
:Oder wenn Sie das erste Element wollen, auch wenn es falsch ist :
Die Extrameile gehen:
Wenn Sie Wert auf Lesbarkeit legen, sich aber nicht auf numerische Vorkommnisse verlassen möchten, können Sie eine Funktion hinzufügen
first()
,Array.protoype
indem Sie sie definieren, mitObject.defineProperty()
der die Fallstricke beim direkten Ändern des integrierten Array-Objektprototyps gemindert werden ( hier erläutert ).Die Leistung ist ziemlich gut (
find()
stoppt nach dem ersten Element), aber nicht perfekt oder universell zugänglich (nur ES6). Weitere Hintergrundinformationen finden Sie unter @Selays Antwort .Um das erste Element abzurufen, können Sie Folgendes tun:
Snippet, um es in Aktion zu sehen:
quelle
find()
?find()
ist seit langem Teil der Sprache. Dies ist der Grund, warum das obige Snippet funktioniert.first()
der Sprache überschreibenWenn nicht garantiert wird, dass Ihr Array mit dem Index Null gefüllt ist, können Sie Folgendes verwenden
Array.prototype.find()
:quelle
!!element
falsche Werte zu überspringen. Ich würde empfehlen,find()
auf diese Weise zu verwenden:sparse.find((_, index, array) => index in array);
da "find" das erste Element zurückgibt, das mit dem Filter
!!e
übereinstimmt && mit einem beliebigen Element übereinstimmt.Hinweis Dies funktioniert nur , wenn das erste Element ist kein „Falsy“:
null
,false
,NaN
,""
,0
,undefined
quelle
array.find(() => true);
? Dies können Sie auch tun[false].find(() => true)
..find(value => true)
nur wie erwartet… aber ehrlich gesagt, wenn Sie einen saubereren Code wünschen und die Eingabe in Typoskript beibehalten möchten, verwenden Sie die Destrukturierung .Versuchen Sie es
alert(ary[0]);
.quelle
Nur wenn Sie underscore.js ( http://underscorejs.org/ ) verwenden, können Sie Folgendes tun:
quelle
Ich weiß, dass Leute, die aus anderen Sprachen zu JavaScript kommen, nach etwas wie
head()
oderfirst()
nach dem ersten Element eines Arrays suchen , aber wie können Sie das tun?Stellen Sie sich vor, Sie haben das folgende Array:
In JavaScript können Sie einfach Folgendes tun:
oder ein ordentlicher, neuerer Weg ist:
Sie können aber auch einfach eine Funktion schreiben wie ...
Wenn Sie einen Unterstrich verwenden, gibt es eine Liste von Funktionen, die dasselbe tun, wonach Sie suchen:
quelle
Methode, die mit Arrays und auch mit Objekten funktioniert (Vorsicht, Objekte haben keine garantierte Reihenfolge!).
Ich bevorzuge diese Methode am meisten, da das ursprüngliche Array nicht geändert wird.
quelle
In ES2015 und höher mit Array-Destrukturierung:
quelle
Eine andere für diejenigen, die sich nur mit wahrheitsgemäßen Elementen befassen
quelle
Suchen Sie das erste Element in einem Array mithilfe eines Filters:
Im Typoskript:
In einfachem Javascript:
Und in ähnlicher Weise indexOf:
Im Typoskript:
In einfachem Javascript:
quelle
Wenn mehrere Übereinstimmungen vorliegen, wird JQuerys .first () zum Abrufen des ersten DOM-Elements verwendet, das mit dem CSS-Selektor übereinstimmt, der für jquery angegeben wurde.
Sie benötigen jQuery nicht, um Javascript-Arrays zu bearbeiten.
quelle
Warum nicht berücksichtigen, wann Ihr Array möglicherweise leer ist?
quelle
Benutz einfach
ary.slice(0,1).pop();
Im
array.slice (START, END) .pop ();
quelle
ary[0]
?Sie können auch .get (0) verwenden:
Um das erste Element des Arrays zu erhalten.
quelle
Verwenden Sie diese Option, um Zeichen in Javascript zu teilen.
quelle
Die vorherigen Beispiele funktionieren gut, wenn der Array-Index bei Null beginnt. Die Antwort von thomax beruhte nicht auf dem Index, der bei Null begann, sondern auf dem Index, auf
Array.prototype.find
den ich keinen Zugriff hatte. Die folgende Lösung mit jQuery $ .each hat in meinem Fall gut funktioniert.quelle
Sie können es so einfach mit lodash
_.head
tun.quelle
arr[0]
wie Sie hier sehen können , weshalb ich dringend davon abraten, eine gigantische Bibliothek wie lodash für eine so kleine Aufgabe zu verwenden.quelle
@NicoLwk Sie sollten Elemente mit Spleiß entfernen, um Ihr Array zurück zu verschieben. So:
quelle
Deklarieren Sie einen Prototyp, um das erste Array- Element zu erhalten:
Dann verwenden Sie es als:
Oder einfach (:
quelle
Wenn Sie eine Ansicht mit dem Array verketten, z
array.map(i => i+1).filter(i => i > 3)
Und wenn
.shift()
Sie das erste Element nach diesen Funktionen möchten, können Sie einfach ein Element hinzufügen , das das Original nicht ändert. Es istarray
dann eine schönere Methodearray.map(i => i+1).filter(=> i > 3)[0]
Wenn Sie das erste Element eines Arrays möchten, ohne das Original zu ändern, können Sie es verwenden
array[0]
oderarray.map(n=>n).shift()
(ohne die Karte ändern Sie das Original. In diesem Fall würde ich übrigens die..[0]
Version vorschlagen .quelle
Erstellen Sie ein beliebiges Objektarray (
req
) undObject.keys(req)[0]
wählen Sie dann einfach den ersten Schlüssel im Objektarray aus.quelle
Die Antwort von @thomax ist ziemlich gut, schlägt jedoch fehl, wenn das erste Element im Array false oder false-y ist (0, leere Zeichenfolge usw.). Es ist besser, nur für etwas anderes als undefiniert true zurückzugeben:
quelle
ES6 einfach:
quelle
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
wird keine Werte entlassen. Trotzdem empfehle ich nicht, find zu verwenden, um den ersten Artikel zu erhalten.