JSでは、ユーザーエントリを配列に分割したい場合、それを行う最善の方法は何ですか?
例えば:
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
おそらく私はこれについて間違った方法で行っています-助けていただければ幸いです!
.split()
メソッドを使用します。空の文字列をセパレータとして指定すると、split()
メソッドは文字ごとに1つの要素を持つ配列を返します。
entry = Prompt("Enter your name")
entryArray = entry.split("");
const array = [...entry]; // entry="i am" => array=["i"," ","a","m"]
var array = entry.split("");
を使用します
英語以外の名前を気にしますか?その場合、提示されたソリューション(.split( '')、[... str]、Array.from(str)など)のすべてが、言語に応じて悪い結果をもたらす可能性があります。
"प्रणव मुखर्जी".split("") // the current president of India, Pranab Mukherjee
// returns ["प", "्", "र", "ण", "व", " ", "म", "ु", "ख", "र", "्", "ज", "ी"]
// but should return ["प्", "र", "ण", "व", " ", "मु", "ख", "र्", "जी"]
クリーンな標準ベースの分割には、grapheme-splitterライブラリの使用を検討してください。 https://github.com/orling/grapheme-splitter
これを試すことができます:
var entryArray = Array.prototype.slice.call(entry)
...また、CSの文学が好きな人のために。
array = Array.from(entry);
ES6は、オブジェクト(文字列、配列、マップ、セット)を反復処理するのに非常に強力です。これを解決するためにスプレッド演算子を使用しましょう。
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"]
split
メソッドを使用します。
_entry = Prompt("Enter your name");
entryArray = entry.split("");
_
詳細については String.prototype.split()
を参照してください。