Преобразование строки в массив является необычной операцией. В зависимости от требований, строку можно разбить на предложения, слова или даже буквы. Элементы, на которые разбивается строка, будут являться элементами массива.
Строка может быть преобразована в массив несколькими способами. Рассмотрим их.
split()
Этот метод используется для разделения строки на основе предоставленного разделителя и возвращает массив разделенных элементов.
let names1 = 'Иван,Егор,Петр,Олег';
let names2 = 'Иван Егор Петр Олег';
let names3 = 'Иван | Егор | Петр | Олег';
let singleName = 'Николай';
names1.split(','); // ['Иван', 'Егор', 'Петр', 'Олег']
names2.split(' '); // ['Иван', 'Егор', 'Петр', 'Олег']
names3.split(' | '); // ['Иван', 'Егор', 'Петр', 'Олег']
singleName.split(''); // ['Н', 'и', 'к', 'о', 'л', 'а', 'й']
Array.from()
Метод Array.from() возвращает массив из любого итерируемого объекта. Мы можем передать строковое значение в метод, чтобы получить массив символов.
Array.from('Николай'); // ['Н', 'и', 'к', 'о', 'л', 'а', 'й']
Метод может принимать второй параметр - функцию с обращением к каждому элементу массива, который можно дополнительно обработать.
Array.from('Николай', (val, index) => val + index); // ['Н0', 'и1', 'к2', 'о3', 'л4', 'а5', 'й6']
Спред-оператор (...)
Спред-оператор (…) извлекает каждый символ строки обрабатываемого элемента и добавляет его в целевой. Мы можем выполнить эту процедуру для пустого массива, тем самым получив заполненный элементами строки.
let singleName = 'Николай';
let arr = [...singleName];
console.log(arr); // => ['Н', 'и', 'к', 'о', 'л', 'а', 'й']
Object.assign()
Этот метод используется для копирования значений и свойств из одного или нескольких исходных объектов в целевой объект. Мы можем указать строку в качестве источника и пустой массив в качестве целевого объекта, для создания массива из строки.
let singleName = 'Николай';
let arr = Object.assign([], singleName);
console.log(arr); // => ['Н', 'и', 'к', 'о', 'л', 'а', 'й']
Цикл for
С помощью цикла мы можем перебрать каждый символ строки и поместить его в пустой массив.
let singleName = 'Николай';
let arr = [];
for(let i of singleName) {
arr.push(i);
}
console.log(arr); // => ['Н', 'и', 'к', 'о', 'л', 'а', 'й']