Es un poco extraño que la clase JavaScript Array no ofrezca un último método para recuperar el último elemento de una matriz. Sé que la solución es simple (Ar [Ar.length-1]), pero aún así, esto se usa con demasiada frecuencia.
¿Alguna razón seria por la cual esto aún no está incorporado?
javascript
Nikhil Garg
fuente
fuente
item= array.pop();
.array[array.length-1]
es mucho más rápido que los demás.(Ar[Ar.length-1])
obtiene 20 veces mejor rendimiento para mí.Respuestas:
Porque Javascript cambia muy lentamente. Y eso es porque la gente actualiza los navegadores lentamente.
Muchas bibliotecas Javascript implementan su propia
last()
función. Use uno!fuente
last()
función. La pregunta se refería a la naturaleza del desarrollo del lenguaje central Javascript mismo.Puedes hacer algo como esto:
Mostrar fragmento de código
La cantidad de métodos auxiliares que se pueden agregar a un idioma es infinita. Supongo que simplemente no han considerado agregar este.
fuente
Es fácil definir uno usted mismo. Ese es el poder de JavaScript.
Sin embargo, esto puede causar problemas con el código de terceros que (incorrectamente) usa
for..in
bucles para iterar sobre las matrices.Sin embargo, si no está vinculado con problemas de soporte del navegador , el uso de la nueva sintaxis de ES5 para definir propiedades puede resolver ese problema, haciendo que la función no sea enumerable, de la siguiente manera:
fuente
for..in
problema. Claro, todavía no estamos allí con una implementación amplia de ES5, pero es lo suficientemente bueno como para saber ahora, ya que los navegadores se están poniendo al día rápidamente, incluido IE9.this.length - 1
evalúa a-1
, que, debido a que es un número negativo, se trata como una propiedad de matriz, no como un índice de elemento.i = [].concat(loves).pop(); //corn
gato icono ama las palomitas de maíz
fuente
Otra opción, especialmente si ya está utilizando UnderscoreJS, sería:
fuente
fuente
null
oundefined
?this[l-1]
le daría,undefined
como es normal, el acceso a propiedades inexistentes. Personalmente prefiero que JS haya lanzado una excepción en lugar de regresarundefined
, pero JS prefiere barrer los errores debajo de la alfombra.Vine aquí buscando una respuesta a esta pregunta yo mismo. La respuesta de corte es probablemente la mejor, pero seguí adelante y creé una "última" función solo para practicar la extensión de prototipos, así que pensé en seguir adelante y compartirla. Tiene el beneficio adicional sobre algunos otros de permitirle contar opcionalmente hacia atrás a través de la matriz y extraer, por ejemplo, el penúltimo elemento o el penúltimo elemento. Si no especifica un recuento, el valor predeterminado es 1 y extrae el último elemento.
fuente
last(4)
olast(9)
pierde el significado del nombre de la función, es decir;last
Aquí hay otra forma más simple de cortar los últimos elementos.
lastObj
es ahora["barfoo"]
.Python hace esto de la misma manera y cuando intenté usar JS funcionó. Supongo que la manipulación de cadenas en lenguajes de script funciona de la misma manera.
Del mismo modo, si desea los dos últimos objetos en una matriz,
te dará
["foobar", "barfoo"]
y así sucesivamente.fuente
lastObj
lo contendré["barfoo"]
. En cualquier caso, ¿por qué debería hacerlo enArray.prototype.slice.call(tags
lugar de solotags.slice
?pop()
El método mostrará el último valor. Pero el problema es que perderá el último valor de la matriz.fuente
Si, o solo:
si quieres el valor, y no una nueva lista.
fuente