Necesito obtener el último elemento de una matriz dividida con múltiples separadores. Los separadores son comas y espacios. Si no hay separadores, debería devolver la cadena original.
Si la cadena es "¿cómo estás hoy?" debería volver "hoy?"
Si la entrada fuera "hola", la salida debería ser "hola".
¿Cómo puedo hacer esto en JavaScript?
javascript
split
JJJ
fuente
fuente
pieces.pop()
para obtener el último elemento de su matriz.var last = str.split(/[\s,]+/).pop()
Hay una línea para todo. :)
fuente
split
llamada, de todos modos no se mantiene. La cadena original no se cambia haciendo estallar el elemento de la matriz.{1,}
, es decir,[, ]+
coincide con uno o más de los caracteres del conjunto (coma y espacio). Es útil cuando quiere todas las palabras de la cadena, pero cuando solo quiere la última palabra, no hace ninguna diferencia funcional, solo reduce la sobrecarga, ya que habrá menos cadenas en la matriz.fuente
.split(',').pop()
funciona para el último elemento en una cadena separada por comas. Solo digo que me engañó la asombrosa respuesta de Guffa, ¡simplemente la ignoré porque no necesitaba una expresión regular y pensé que el truco estaba allí! : PTambién puede considerar invertir su matriz y tomar el primer elemento. De esa manera, no tiene que saber acerca de la longitud, pero no aporta beneficios reales y la desventaja de que la operación inversa puede llevar más tiempo con matrices grandes:
Sin embargo, es fácil, pero también modifica la matriz original en cuestión. Eso podría o no ser un problema.
Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
Sin embargo, probablemente quieras usar esto:
fuente
.pop()
método es la mejor respuesta que he visto hasta ahora. ¡Por eso fue creado!El mejor de todos y mi favorito.
fuente
Y si no quieres construir una matriz ...
El desglose en inglés es:
El reemplazo solo dice reemplazar toda la cadena con las cosas después del último separador.
Entonces puede ver cómo esto se puede aplicar en general. Tenga en cuenta que la cadena original no se modifica.
fuente
fuente
Puede acceder al índice de matriz directamente:
var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three
fuente