2011-11-02 5 views
25

Dans JS, si vous souhaitez diviser l'entrée utilisateur en tableau, quelle est la meilleure façon de procéder?Diviser la chaîne en tableau

Par exemple:

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 

Peut-être que je vais sur ce dans le mauvais sens - apprécierait toute aide!

Répondre

45

Utilisez la méthode .split(). Lorsque vous spécifiez une chaîne vide comme séparateur, la méthode split() renvoie un tableau avec un élément par caractère.

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

N'utilisez pas '.split ('')'. Pls voir http://stackoverflow.com/a/38901550/112731 –

6

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

1

Utilisez la méthode split:

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

Référez-String.prototype.split() pour plus d'informations.

2

Vous pouvez essayer ceci:

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

+2

Voir [http://jsperf.com/string-to-array-of-characters](http://jsperf.com/string-to-array -de-caractères). – XP1

7

ES6:

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

... et aussi pour ceux qui aiment la littérature dans CS.

array = Array.from(entry); 
1

Vous vous occupez de noms autres qu'anglais? Si oui, toutes les solutions présentées (de .split (''), [... str], Array.from (str), etc.) peut donner de mauvais résultats, en fonction de la langue:

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

Tenir compte en utilisant la bibliothèque grapheme-splitter pour une division basée sur des normes propres: https://github.com/orling/grapheme-splitter