¿Cómo se obtiene el primer elemento de una matriz como esta:
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
Intenté esto:
alert($(ary).first());
Pero volvería [object Object]
. Entonces necesito obtener el primer elemento de la matriz, que debería ser el elemento 'first'
.
javascript
jquery
arrays
MacMac
fuente
fuente
Respuestas:
Me gusta esto
fuente
var a = []; a[7] = 'foo'; alert(a[0]);
¿Por qué estás jQuery-ifying una matriz JavaScript de vainilla? ¡Utiliza JavaScript estándar!
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
También,
Fuente , cortesía de bobince.
fuente
Algunas de las formas a continuación para diferentes circunstancias.
En la mayoría de los casos normales, la forma más sencilla de acceder al primer elemento es mediante
pero esto requiere que verifique si [0] realmente existe.
Hay casos del mundo real en los que no le importa la matriz original y no desea verificar si existe un índice, solo desea obtener el primer elemento o una línea no definida.
En este caso, puede usar shift () método para obtener el primer elemento, pero tenga cuidado de que este método modifique la matriz original (elimine el primer elemento y lo devuelva). Por lo tanto, la longitud de una matriz se reduce en uno. Este método se puede usar en casos en línea donde solo necesita obtener el primer elemento, pero no le importa la matriz original.
Lo importante es saber que los dos anteriores son solo una opción si su matriz comienza con un índice [0].
Hay casos en los que se ha eliminado el primer elemento, por ejemplo, eliminar yourArray [0] dejando su matriz con "agujeros". Ahora el elemento en [0] simplemente no está definido, pero desea obtener el primer elemento "existente". He visto muchos casos del mundo real de esto.
Entonces, suponiendo que no tenemos conocimiento de la matriz y la primera clave (o sabemos que hay agujeros), aún podemos obtener el primer elemento.
Puede usar find () para obtener el primer elemento.
La ventaja de find () es su eficiencia, ya que sale del bucle cuando se alcanza el primer valor que satisface la condición (más sobre esto a continuación). (Puede personalizar la condición para excluir valores nulos u otros valores vacíos también)
También me gustaría incluir filter () aquí como una opción para "arreglar" primero la matriz en la copia y luego obtener el primer elemento manteniendo intacta la matriz original (sin modificar).
Otra razón para incluir filter () aquí es que existía antes de find () y muchos programadores ya lo han estado usando (es ES5 contra find () como ES6).
Advertencia de que filter () no es realmente una forma eficiente (filter () se ejecuta a través de todos los elementos) y crea otra matriz. Está bien usarlo en matrices pequeñas ya que el impacto en el rendimiento sería marginal, más cercano al uso de forEach, por ejemplo.
(Veo que algunas personas sugieren usar for ... in loop para obtener el primer elemento, pero recomendaría este método para ... in no debería usarse para iterar sobre una matriz donde el orden del índice es importante porque no lo hace ' No garantiza el pedido, aunque puede argumentar que los navegadores respetan el orden en su mayoría. Por cierto, porque cada uno no resuelve el problema como muchos sugieren porque no puede romperlo y se ejecutará a través de todos los elementos. Sería mejor usar un simple para bucle y comprobando clave / valor
Tanto find () como filter () garantizan el orden de los elementos, por lo que son seguros de usar como se indicó anteriormente.
fuente
yourArray.map(n=>n).shift()
, devolverá el primer elemento sin modificar el original ... no sé si es la mejor manera, pero si encadena una matriz con .map (). Filter (). Some (). Shift () está bien .. de lo contrario usaríayourArray[0]
Usando la desestructuración ES6
Que es lo mismo que
fuente
El elemento del índice 0 puede no existir si el primer elemento ha sido eliminado:
Mejor manera de obtener el primer elemento sin jQuery:
fuente
Si desea preservar la legibilidad , siempre puede agregar una primera función a
Array.protoype
:A, entonces podría recuperar fácilmente el primer elemento:
fuente
.first()
mejor escribir que hacer[0]
?1
.first
es inequívoco en ese caso.Solo puedes usar
find()
:O si quieres el primer elemento, incluso si es falso :
Ir más allá:
Si le interesa la legibilidad pero no desea confiar en incidencias numéricas, puede agregar una
first()
funciónArray.protoype
definiéndola con laObject.defineProperty()
que mitigue los inconvenientes de modificar directamente el prototipo de objeto Array incorporado ( explicado aquí ).El rendimiento es bastante bueno (se
find()
detiene después del primer elemento) pero no es perfecto ni universalmente accesible (solo ES6) Para obtener más información, lea la respuesta de @Selays .Luego, para recuperar el primer elemento que puede hacer:
Fragmento para verlo en acción:
fuente
find()
?find()
Ha sido durante mucho tiempo parte del lenguaje. Es la razón por la que funciona el fragmento anterior.first()
método del lenguajeSi no se garantiza que su matriz se llene desde el índice cero, puede usar
Array.prototype.find()
:fuente
!!element
ya que omitirá los valores falsos. Recomiendo usarfind()
de esta manera:sparse.find((_, index, array) => index in array);
dado que "buscar" devuelve el primer elemento que coincide con el filtro &&
!!e
coincide con cualquier elemento.Nota Esto sólo funciona cuando el primer elemento no es un "Falsy":
null
,false
,NaN
,""
,0
,undefined
fuente
array.find(() => true);
? Esto te permite hacerlo[false].find(() => true)
también..find(value => true)
está funcionando como se esperaba ... pero, sinceramente, si desea un código más limpio y para seguir escribiendo en mecanografiado, use la desestructuración .Tratar
alert(ary[0]);
.fuente
Solo en caso de que esté utilizando underscore.js ( http://underscorejs.org/ ) puede hacer lo siguiente:
fuente
Sé que las personas que vienen de otros idiomas a JavaScript, buscan algo como
head()
ofirst()
para obtener el primer elemento de una matriz, pero ¿cómo pueden hacerlo?Imagina que tienes la matriz a continuación:
En JavaScript, simplemente puedes hacer:
o una forma más ordenada y nueva es:
Pero también puedes simplemente escribir una función como ...
Si usa subrayado, hay una lista de funciones que hacen lo mismo que busca:
fuente
Método que funciona con matrices , y también funciona con objetos (¡cuidado, los objetos no tienen un orden garantizado!).
Prefiero más este método, porque la matriz original no se modifica.
fuente
En ES2015 y superior, utilizando la desestructuración de matrices:
fuente
Otro para aquellos que solo se preocupan por los elementos de verdad.
fuente
Encuentre el primer elemento en una matriz usando un filtro:
En mecanografiado:
En javascript simple:
Y de manera similar, indexOf:
En mecanografiado:
En javascript simple:
fuente
Cuando hay varias coincidencias, el .first () de JQuery se usa para recuperar el primer elemento DOM que coincide con el selector css dado a jquery.
No necesita jQuery para manipular matrices de JavaScript.
fuente
¿Por qué no tener en cuenta las veces que su matriz podría estar vacía?
fuente
Solo usa
ary.slice(0,1).pop();
En
array.slice (START, END) .pop ();
fuente
ary[0]
?También podría usar .get (0):
Para obtener el primer elemento de la matriz.
fuente
Use esto para dividir caracteres en javascript.
fuente
Los ejemplos anteriores funcionan bien cuando el índice de matriz comienza en cero. La respuesta de thomax no se basó en el índice que comienza en cero, sino en el
Array.prototype.find
que no tuve acceso. La siguiente solución usando jQuery $ .each funcionó bien en mi caso.fuente
Puedes hacerlo por lodash
_.head
tan fácilmente.fuente
arr[0]
como se puede ver aquí, que es por lo fuertemente desalentar el uso de una biblioteca gigantesca como lodash para una pequeña tarea.fuente
@NicoLwk Debe eliminar elementos con empalme, que desplazarán su matriz hacia atrás. Entonces:
fuente
Declare un prototipo para obtener el primer elemento de matriz como:
Luego úsalo como:
O simplemente (:
fuente
Si está encadenando una vista de funciones a la matriz, por ejemplo
array.map(i => i+1).filter(i => i > 3)
Y si desea el primer elemento después de estas funciones, simplemente puede agregar un
.shift()
no modifica el originalarray
, es una mejor maneraarray.map(i => i+1).filter(=> i > 3)[0]
Si desea el primer elemento de una matriz sin modificar el original, puede usar
array[0]
oarray.map(n=>n).shift()
(sin el mapa, modificará el original. En este caso, sugeriría la..[0]
versión).fuente
Haga cualquier matriz de objetos (
req
), luego simplementeObject.keys(req)[0]
elija la primera clave en la matriz de objetos.fuente
La respuesta de @thomax es bastante buena, pero fallará si el primer elemento de la matriz es falso o falso-y (0, cadena vacía, etc.). Es mejor volver verdadero para cualquier cosa que no sea indefinida:
fuente
ES6 fácil:
fuente
[false, 0, null, undefined, '', 'last'].find(v => v)
a.find(value => true)
no descartará ningún valor. Aún así, no recomiendo usar find para obtener el primer elemento.