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!
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("");
const array = [...entry]; // entry="i am" => array=["i"," ","a","m"]
utilisez var array = entry.split("");
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
Vous pouvez essayer ceci:
var entryArray = Array.prototype.slice.call(entry)
... et aussi pour ceux qui aiment la littérature en CS.
array = Array.from(entry);
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);
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"]
Utilisez la méthode split
:
entry = Prompt("Enter your name");
entryArray = entry.split("");
Reportez-vous String.prototype.split()
pour plus d'informations.