Разбить строку на массив - PullRequest
32 голосов
/ 02 ноября 2011

В 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

Возможно, я иду по этому пути неправильно - буду признателен за любую помощь!

Ответы [ 9 ]

60 голосов
/ 02 ноября 2011

Используйте метод .split(). Когда в качестве разделителя указывается пустая строка, метод split() возвращает массив с одним элементом на символ.

entry = prompt("Enter your name")
entryArray = entry.split("");
8 голосов
/ 14 сентября 2016

ES6:

const array = [...entry]; // entry="i am" => array=["i"," ","a","m"]
7 голосов
/ 02 ноября 2011

использование var array = entry.split("");

5 голосов
/ 21 июля 2017

Вы заботитесь о неанглийских именах?В таком случае все представленные решения (.split (''), [... str], Array.from (str) и т. Д.) Могут давать плохие результаты в зависимости от языка:

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

Рассмотрите возможность использования библиотеки разделителя графем для чистого разделения на основе стандартов: https://github.com/orling/grapheme-splitter

3 голосов
/ 06 ноября 2016

... а также для тех, кто любит литературу в CS.

array = Array.from(entry);
3 голосов
/ 02 ноября 2011

Вы можете попробовать это:

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

2 голосов
/ 08 сентября 2018

ES6 достаточно мощен для итерации по объектам (строки, массив, карта, набор). Для решения этой проблемы воспользуемся оператором распространения.

entry = prompt("Enter your name");
var count = [...entry];
console.log(count);
2 голосов
/ 18 мая 2018
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 голосов
/ 02 ноября 2011

Используйте split метод:

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

Для получения дополнительной информации см. String.prototype.split().

...