Метод join() у масивах
join() об'єднує всі елементи масиву в один рядок, розділяючи їх указаним розділювачем (separator). Метод нічого не змінює у вихідному масиві, а лише повертає новий рядок, і саме тому його зручно використовувати для виводу списків, побудови шляхів, дат чи CSV-рядків.
Теорія
TL;DR
join()перетворює масив на рядок.- Розділювач за замовчуванням, кома
",". - Кожен елемент неявно зводиться до рядка.
nullіundefinedперетворюються на порожній рядок.- Метод не мутує масив і повертає саме рядок.
- Зворотна дія, це
split():"a-b".split("-")дає["a", "b"].
Швидкий приклад
const fruits = ["apple", "banana", "cherry"];
const result = fruits.join(", ");
console.log(result); // "apple, banana, cherry"Що тут відбувається:
- кожен елемент масиву перетворюється на рядок;
- між елементами вставляється розділювач
", "; - якщо розділювач не вказано, використовується кома за замовчуванням.
Синтаксис і параметр
array.join(separator);| Параметр | Опис |
|---|---|
separator | (необов'язковий) рядок, який вставлятиметься між елементами. Якщо не вказати, використовується ",". |
Якщо передати не рядок, він теж зведеться до рядка: [1, 2].join(0) дає "102". Порожній масив завжди дає порожній рядок, а масив з одного елемента, просто цей елемент у вигляді рядка, без жодного розділювача.
Приклади з різними розділювачами
Без розділювача:
[1, 2, 3].join("");
// "123"З пробілом:
["JS", "is", "awesome"].join(" ");
// "JS is awesome"З іншим символом:
["2025", "10", "14"].join("-");
// "2025-10-14"З порожніми елементами:
[1, , 3].join("-");
// "1--3", the hole still counts as a positionКілька рядків одним викликом:
["first line", "second line"].join("\n");
// "first line\nsecond line"Як елементи зводяться до рядка
Перед склеюванням join() викликає рядкове перетворення для кожного елемента, і тут є кілька неочевидних правил:
[1, null, 2, undefined, 3].join("-");
// "1--2--3", null and undefined become empty strings
[true, false].join(" ");
// "true false"
[[1, 2], [3, 4]].join(";");
// "1,2;3,4", nested arrays use their own default join
[{ a: 1 }].join();
// "[object Object]"Тобто для об'єктів результат майже завжди марний: спочатку перетворіть їх на потрібні рядки через map:
const users = [{ name: 'Alice' }, { name: 'Bob' }];
users.map(u => u.name).join(', '); // "Alice, Bob"Важливо пам'ятати
- Метод не змінює вихідний масив.
- Усі елементи перед об'єднанням неявно перетворюються на рядки.
- Повертає рядок, а не масив.
Практичний приклад:
const tags = ["frontend", "javascript", "interview"];
const hashtagString = "#" + tags.join(" #");
console.log(hashtagString);
// "#frontend #javascript #interview"join() поряд із toString() і split()
| Метод | Що робить | Приклад |
|---|---|---|
join(sep) | Склеює масив у рядок із будь-яким розділювачем | [1,2].join("-") дає "1-2" |
toString() | Те саме, але розділювач завжди кома | [1,2].toString() дає "1,2" |
split(sep) | Зворотна дія: рядок у масив | "1-2".split("-") дає ["1","2"] |
concat() | Об'єднує масиви, а не робить рядок | [1].concat([2]) дає [1,2] |
Насправді toString() для масиву визначено через join() без аргументів, тому неявне перетворення масиву в рядок (наприклад, у шаблонному рядку) дає той самий результат, що й join().
Коротко
| Що робить | Перетворює масив на рядок |
|---|---|
| Розділювач за замовчуванням | "," |
| Повертає | Рядок |
| Змінює масив | Ні |
| Приклад | ["a", "b"].join("-") дає "a-b" |
Підсумок:
join(), це спосіб зібрати масив у рядок, вставляючи між елементами потрібний розділювач.
Типові помилки
- Очікувати, що
join()поверне масив. Він повертає рядок, тому після нього методи масивів (map,filter) уже недоступні. - Плутати
join()зconcat().concat()об'єднує масиви в масив,join()робить з масиву рядок. - Забувати, що
join()без аргументу ставить кому.["a","b"].join()дає"a,b", а не"ab". Для склеювання без розділювача треба явно передати"". - Розраховувати, що
nullіundefinedзникнуть. Вони перетворюються на порожній рядок, але позицію в результаті займають, тому з'являються подвійні розділювачі. Фільтруйте:arr.filter(Boolean).join(', '). - Склеювати масив об'єктів. Кожен об'єкт дасть
"[object Object]". Спершу зробітьmapна потрібне поле. - Використовувати
join()для генерації HTML із користувацьких даних. Рядок вставиться як є, тому потрібне екранування, інакше отримаєте XSS.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.