Справочник · JavaScript
Метод split(): строка в массив
Метод split(separator) разбивает строку на массив частей по разделителю: запятой, пробелу, переводу строки или регулярному выражению. Сам разделитель в результат не попадает. Второй аргумент ограничивает число частей. Обратная операция — метод массива join.
'a,b,c'.split(',')→['a', 'b', 'c'].split('')— на отдельные символы (с оговоркой про эмодзи).- Регулярное выражение:
split(/\s+/)— по любым пробелам. - Второй аргумент — максимум частей.
- Обратно в строку —
join.
Минимальный пример
const tags = 'html, css, javascript';
tags.split(', '); // ['html', 'css', 'javascript']
tags.split(',').map((t) => t.trim()); // то же, но устойчиво к лишним пробеламТипичный случай — теги или email-адреса, введённые через запятую. Пробелы вокруг частей удобнее убрать через trim, чем угадывать точный разделитель.
Частые разделители
| Вызов | Результат |
|---|---|
'2026-10-25'.split('-') | ['2026', '10', '25'] |
'один два'.split(' ') | ['один', 'два'] |
text.split('\n') | строки текста |
'abc'.split('') | ['a', 'b', 'c'] |
'abc'.split() | ['abc'] — без разделителя вся строка |
''.split(',') | [''] — массив с одной пустой строкой |
Обрати внимание на последнюю строку: пустая строка даёт не пустой массив, а массив из одной пустой строки. Проверяй ввод до разбиения.
Разбиение по регулярному выражению
' много пробелов '.trim().split(/\s+/); // ['много', 'пробелов']
'a, b;c , d'.split(/\s*[,;]\s*/); // ['a', 'b', 'c', 'd']
'line1\r\nline2\nline3'.split(/\r?\n/); // строки при любых переводахРегулярное выражение решает проблему разных разделителей и лишних пробелов. /\s+/ — один или больше пробельных символов, /\r?\n/ — переводы строк Windows и Unix.
Пустые элементы
'a,,b,'.split(','); // ['a', '', 'b', '']
'a,,b,'.split(',').filter(Boolean); // ['a', 'b']Два разделителя подряд или разделитель в конце дают пустые строки. filter(Boolean) убирает их, потому что пустая строка ложна.
Лимит частей
'a-b-c-d'.split('-', 2); // ['a', 'b'] — остальное отброшено
// разбить только по первому разделителю
const line = 'title: Привет: мир';
const i = line.indexOf(': ');
const [key, value] = [line.slice(0, i), line.slice(i + 2)]; // 'title', 'Привет: мир'Второй аргумент не склеивает остаток в последний элемент, а просто отбрасывает лишнее. Чтобы разделить строку только по первому вхождению, используй indexOf и slice.
Строка в массив символов
'привет'.split(''); // ['п', 'р', 'и', 'в', 'е', 'т']
'👍🏽ok'.split(''); // эмодзи развалятся на части
[...'👍ok']; // ['👍', 'o', 'k'] — по символам Unicode
'шалаш'.split('').reverse().join('') === 'шалаш'; // проверка палиндромаsplit('') делит строку на кодовые единицы UTF-16, поэтому эмодзи и некоторые символы ломаются. Spread [...str] делит по символам Unicode; составные эмодзи с модификаторами корректно делит только Intl.Segmenter.
split с деструктуризацией
const [year, month, day] = '2026-10-25'.split('-').map(Number);
const [name, domain] = 'anna@example.ru'.split('@');Разбор строки на части сразу по переменным — короткий и понятный приём. Числовые части приводи через map(Number). Подробнее — деструктуризация.
split или join
Строка → массив: разобрать ввод, CSV, путь, дату.
Массив → строка: собрать список через запятую, путь, класс.
Частые ошибки
- Разбивают по ', ' и ломаются на вводе без пробела после запятой.
- Не ожидают пустых строк от двойных разделителей.
- Считают, что
''.split(',')вернёт пустой массив. - Делят эмодзи через
split(''). - Ждут, что лимит склеит остаток в последнюю часть.
Доступность
Разбирая ввод пользователя через split, принимай разные варианты: запятые с пробелами и без, переводы строк, точки с запятой. Сообщай о формате в подсказке у поля, а ошибки разбора показывай текстом, связанным с полем.
Поддержка браузерами
split поддерживается всеми браузерами. Intl.Segmenter доступен во всех актуальных браузерах.
Практика
Пользователь вводит теги через запятую или точку с запятой, с произвольными пробелами: ' html ,css;; JS '. Напиши функцию parseTags, которая вернёт массив уникальных тегов в нижнем регистре без пустых: ['html', 'css', 'js'].
Показать решение
function parseTags(input) {
const tags = input
.split(/[,;]/)
.map((t) => t.trim().toLowerCase())
.filter(Boolean);
return [...new Set(tags)];
}
parseTags(' html ,css;; JS '); // ['html', 'css', 'js']Частые вопросы
Как разбить строку на массив?
str.split(разделитель), например 'a,b'.split(',').
Как разбить строку на символы?
split('') или надёжнее для эмодзи — [...str].
Как разбить по нескольким разделителям?
Регулярным выражением: str.split(/[,;]\s*/).
Почему в результате пустые строки?
Два разделителя подряд или разделитель в начале и конце. Убери их через filter(Boolean).
Как собрать массив обратно в строку?
Методом массива join(разделитель).