Как преобразовать массив в строку и обратно в JavaScript (join и split)?
Есть массив тегов, хочу склеить их в строку через запятую, а потом из такой строки снова получить массив. Какие методы для этого — что-то вроде массив в строку и строку в массив? Запутался, какой что делает.
2 ответа
Два парных метода: join (массив → строка) и split (строка → массив).
join(разделитель) склеивает элементы массива в строку:
const tags = ['js', 'html', 'css'];
const str = tags.join(', ');
console.log(str); // 'js, html, css'
Если разделитель не указать, join ставит запятую по умолчанию. Можно склеить и без разделителя — join('').
split(разделитель) режет строку на массив по разделителю:
const str = 'js, html, css';
const tags = str.split(', ');
console.log(tags); // ['js', 'html', 'css']
Важно: split — это метод строки, а join — метод массива. Их легко перепутать местами.
Полезные частные случаи split:
'привет'.split(''); // ['п','р','и','в','е','т'] — по буквам
'1 2 3'.split(' '); // ['1', '2', '3'] — по пробелу
Грабли: после split элементы — строки, даже если это были цифры. Чтобы получить числа, добавь map:
const nums = '1,2,3'.split(',').map(Number);
console.log(nums); // [1, 2, 3] — уже числа
Без .map(Number) ты бы складывал строки и получил бы склейку вроде '12', а не сумму.
Запомнить, кто есть кто, помогает смысл слов: join — соединить (в строку), split — расщепить (на части).
Ещё toString() у массива — это по сути join(','):
console.log([1, 2, 3].toString()); // '1,2,3'
Но join гибче — позволяет задать любой разделитель, поэтому чаще берут именно его.