web-dev-qa-db-fra.com

Fractionner la chaîne en tableau

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

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 j'y vais mal - j'apprécierais toute aide!

32
methuselah

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

entry = Prompt("Enter your name")
entryArray = entry.split("");
62
James Hill

ES6:

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

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

7
Jordan Wallwork

Vous souciez-vous des noms non anglais? Si c'est le cas, toutes les solutions présentées (.split (''), [... str], Array.from (str), etc.) peuvent donner de mauvais résultats, selon la langue:

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

Pensez à utiliser la bibliothèque grapheme-splitter pour une répartition propre basée sur des normes: https://github.com/orling/grapheme-splitter

5
Orlin Georgiev

Vous pouvez essayer ceci:

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

3
Mic

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

array = Array.from(entry);
3
Redu

ES6 est assez puissant pour itérer à travers des objets (chaînes, tableau, carte, ensemble). Utilisons un opérateur d'étalement pour résoudre ce problème.

entry = Prompt("Enter your name");
var count = [...entry];
console.log(count);
2
JideLambo
var foo = 'somestring'; 

// bad example https://stackoverflow.com/questions/6484670/how-do-i-split-a-string-into-an-array-of-characters/38901550#38901550

var arr = foo.split(''); 
console.log(arr); // ["s", "o", "m", "e", "s", "t", "r", "i", "n", "g"]

// good example
var arr = Array.from(foo);
console.log(arr); // ["s", "o", "m", "e", "s", "t", "r", "i", "n", "g"]

// best
var arr = [...foo]
console.log(arr); // ["s", "o", "m", "e", "s", "t", "r", "i", "n", "g"]
2
аlex dykyі

Utilisez la méthode split:

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

Reportez-vous String.prototype.split() pour plus d'informations.

2
Lukman