2011-11-02 148 views
25

在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 

也许我要对此错误的方式 - 希望得到任何帮助!

回答

45

使用.split()方法。当指定空字符串作为分隔符时,split()方法将返回一个数组,每个字符包含一个元素。

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

请勿使用'.split('')'。请参阅http://stackoverflow.com/a/38901550/112731 –

6

使用var array = entry.split("");

2

你可以试试这个:

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

+2

请参阅[http://jsperf.com/string-to-array-of-characters](http://jsperf.com/string-to-array -of-字符)。 – XP1

7

ES6:

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

...和谁也为那些喜欢在CS文献。

array = Array.from(entry); 
1

您是否在意非英文名?如果是这样,所有提出的解决方案(.split( ''),[... STR],Array.from(STR)等)可能会糟糕的结果,这取决于语言:

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

考虑使用字形分隔符库进行干净的基于标准的分割: https://github.com/orling/grapheme-splitter