DevGang
Авторизоваться

4 способа объединения строк в JavaScript

Вот 4 способа объединить строки в JavaScript. Мой любимый способ - использовать строки шаблонов. Почему? Поскольку он более читабелен, нет обратной косой черты для экранирования кавычек, нет неудобного разделителя пустого пространства.

const icon = '👋';

// Template Strings
`hi ${icon}`;

// join() Method
['hi', icon].join(' ');

// Concat() Method
''.concat('hi ', icon);

// + Operator
'hi ' + icon;

// RESULT
// hi 👋

1. Шаблон строки

Если вы пришли из другого языка, такого как Ruby, вы будете знакомы с термином интерполяция строк. Это именно то, чего пытается достичь шаблон строки. Это простой способ включить выражения в ваше создание строк, которые читабельны и кратки.

const name = 'samantha';
const country = '🇨🇦';

Проблема отсутствия пространства в конкатенации строк

До шаблона строки будет результат моей строки 😫

"Hi, I'm " + name + "and I'm from " + country;

Ты понял мою ошибку? Мне не хватает места 😫. И это очень распространенная проблема при объединении строк.

// Hi, I'm samanthaand I'm from 🇨🇦

Решение с помощью шаблона строк

С шаблоном строк это решается. Вы пишете именно так, как хотите, чтобы ваша строка выглядела. Так что очень легко определить, если места не хватает.

`Hi, I'm ${name} and I'm from ${country}`;

2. join()

Метод join сочетает в себе элементы массива и возвращает строку. Поскольку он работает с массивом, он очень удобен, если вы хотите добавить дополнительные строки.  

const array = ['My handles are'];
const handles = [instagram, twitter, tiktok].join(', '); // @samanthaming, @samantha_ming, @samanthaming

array.push(handles); // ['My handles are', '@samanthaming, @samantha_ming, @samanthaming']

array.join(' '); 

// My handles are @samanthaming, @samantha_ming, @samanthaming

Настройка разделителя

Самое замечательное в join - это то, что вы можете настроить способ объединения элементов массива. Вы можете сделать это, передав разделитель в свой параметр.

const array = ['My handles are '];
const handles = [instagram, twitter, tiktok].join(', '); // @samanthaming, @samantha_ming, @samanthaming

array.push(handles);

array.join('');

// My handles are @samanthaming, @samantha_ming, @samanthaming

3. concat ()

С помощью concat вы можете создать новую строку, вызвав метод для строки.  

const instagram = '@samanthaming';
const twitter = '@samantha_ming';
const tiktok = '@samanthaming';

'My handles are '.concat(instagram, ', ', twitter', ', tiktok);

// My handles are @samanthaming, @samantha_ming, @samanthaming

Объединение строки с массивом

Вы также можете использовать concat для объединения строки с массивом. Когда я передаю аргумент массива, он автоматически преобразует элементы массива в строку, разделенную запятой ,.

const array = [instagram, twitter, tiktok];

'My handles are '.concat(array);

// My handles are @samanthaming,@samantha_ming,@samanthaming

Если вы хотите, чтобы он был отформатирован лучше, мы можем использовать join для настройки нашего разделителя.  

const array = [instagram, twitter, tiktok].join(', ');

'My handles are '.concat(array);
// My handles are @samanthaming, @samantha_ming, @samanthaming

4. Plus Operator (+)

Одна интересная вещь об использовании оператора + при объединении строк. Вы можете использовать его для создания новой строки или мутировать существующую строку, добавляя к ней.

Non-Mutative

Здесь мы используем + чтобы создать новую строку.

const instagram = '@samanthaming';
const twitter = '@samantha_ming';
const tiktok = '@samanthaming';

const newString = 'My handles are ' + instagram + twitter + tiktok;

Mutative

Мы также можем добавить его к существующей строке, используя +=. Так что если по какой-то причине вам нужен мутативный подход, это может быть хорошим вариантом для вас.

let string = 'My handles are ';

string += instagram + twitter;

// My handles are @samanthaming@samantha_ming

О, черт, опять забыл о пространстве. Смотрите! Так легко пропустить пробел при объединении строк.

string += instagram + ', ' + twitter + ', ' + tiktok;

// My handles are @samanthaming, @samantha_ming, @samanthaming

Это все еще выглядит сыровато, давайте вставим туда join!

string += [instagram, twitter, tiktok].join(', ');

// My handles are @samanthaming, @samantha_ming, @samanthaming

Экранирование символов в строках

Когда в вашей строке есть специальные символы, вам нужно сначала экранировать эти символы при объединении. Давайте рассмотрим несколько сценариев и посмотрим, как мы можем избежать их 💪

Избегайте одинарных кавычек или апострофов (')

При создании строки вы можете использовать одинарные или двойные кавычки. Когда у вас есть одна кавычка в строке, очень простое решение состоит в том, чтобы использовать противоположность для создания строки.

const happy = 🙂;

["I'm ", happy].join(' ');

''.concat("I'm ", happy);

"I'm " + happy;

// RESULT
// I'm 🙂

Конечно, вы также можете использовать обратную косую черту \, чтобы экранировать символы. Но я нахожу, что это немного трудно читать, поэтому я не часто делаю это таким образом. 

const happy = 🙂;

['I\'m ', happy].join(' ');

''.concat('I\'m ', happy);

'I\'m ' + happy;

// RESULT
// I'm 🙂

Поскольку строки шаблона используют backtick, этот сценарий к нему не относится 👍

Escape Double Quotes (")

Подобно экранированию одинарных кавычек, мы можем использовать ту же технику использования противоположного. Поэтому для избежания двойных кавычек мы будем использовать одинарные кавычки.

const flag = '🇨🇦';

['Canada "', flag, '"'].join(' ');

''.concat('Canada "', flag, '"');

'Canada "' + flag + '"';

// RESULT
// Canada "🇨🇦"

Также можно использовать escape-символ обратной косой черты.

const flag = '🇨🇦';

['Canada "', flag, '"'].join(' ');

''.concat('Canada "', flag, '"');

'Canada "' + flag + '"';

// RESULT
// Canada "🇨🇦"

Поскольку строки шаблона используют backtick, этот сценарий к нему не относится 👍

Escape Backtick

Поскольку строки шаблона используют обратные ссылки для создания своей строки, когда мы хотим вывести этот символ, мы должны экранировать его, используя обратную косую черту.

const flag = '🇨🇦';

`Use backtick \`\` to create a template string`;

// RESULT
// Use backtick `` to create a template string

Поскольку другие создания строк не используют backtick, этот сценарий к ним не относится 👍

Какой способ использовать?

Я показал несколько примеров использования различных способов объединения строк. Какой из них лучше - зависит от ситуации. Когда дело доходит до стилистических предпочтений, мне нравится следовать руководству по стилю Airbnb.

При программном построении строк используйте шаблонные строки вместо конкатенации. 

Почему другие способы все еще имеют значение?

Еще важно знать и другие способы. Зачем? Потому что не каждая кодовая база будет следовать этому правилу, или вы можете иметь дело с устаревшей кодовой базой. Как разработчик, мы должны быть в состоянии адаптироваться и понимать любую среду, в которой мы оказались. Мы находимся там, чтобы решать проблемы, а не жаловаться на то, насколько устарела технология.

Источник:

#JavaScript
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу