2011-11-02 14 views
25

En JS, si desea dividir la entrada de usuario en una matriz, ¿cuál es la mejor manera de hacerlo?Separar cadena en la matriz

Por ejemplo:

entry = prompt("Enter your name") 

for (i=0; i<entry.length; i++) 
{ 
entryArray[i] = entry.charAt([i]); 
} 

// entryArray=['j', 'e', 'a', 'n', 's', 'y'] after loop 

Tal vez voy de este por el camino equivocado - apreciaría cualquier ayuda!

Respuesta

45

Utilice el método .split(). Al especificar una cadena vacía como separador, el método split() devolverá una matriz con un elemento por carácter.

entry = prompt("Enter your name") 
entryArray = entry.split(""); 
+1

No utilice '.split ('')'. Pls ver http://stackoverflow.com/a/38901550/112731 –

6

uso var array = entry.split("");

1

Uso split método:

entry = prompt("Enter your name"); 
entryArray = entry.split(""); 

Consulte String.prototype.split() para obtener más información.

2

Puede probar esto:

var entryArray = Array.prototype.slice.call(entry)

+2

Ver [http://jsperf.com/string-to-array-of-characters](http://jsperf.com/string-to-array -de-personajes). – XP1

7

ES6:

const array = [...entry]; // entry="i am" => array=["i"," ","a","m"] 
2

... y también para aquellos que gustan de la literatura en el CS.

array = Array.from(entry); 
1

¿Le importan los nombres que no están en inglés? Si es así, todas las soluciones presentadas (.split (''), [... str], Array.from (str), etc.) puede dar malos resultados, en función de la lengua:

"प्रणव मुखर्जी".split("") // the current president of India, Pranab Mukherjee 
// returns ["प", "्", "र", "ण", "व", " ", "म", "ु", "ख", "र", "्", "ज", "ी"] 
// but should return ["प्", "र", "ण", "व", " ", "मु", "ख", "र्", "जी"] 

Considérese utilizando la biblioteca divisora ​​de grafemas para una división limpia basada en estándares: https://github.com/orling/grapheme-splitter

Cuestiones relacionadas