Łączenie ciągów znaków w JS

przez | 31 sierpnia 2021

Operator '+’

Najczęściej używany przez początkujących programistów jest operator '+’. Pozwala on tworzyć nowe ciągi znaków lub dopisywać do istniejących jeśli użyjesz +=.

const favouriteFramework = 'Angular';
const string = "Mój ulubiony framework to " + favouriteFramework;
console.log(string);
// Mój ulubiony framework to Angular
const string = "Mój ulubiony framework to ";
const string += 'Angular';
console.log(string);
// Mój ulubiony framework to Angular

Join

Metoda join pozwala utworzyć ciąg znaków z tablicy elementów. Join jako parametr przyjmuje separator, który domyślnie ma wartość przecinka.

Metoda nie ostrzeże Cię jeśli w tablicy będą inne typy danych – trzeba uważać na umieszczenie w tablicy funkcji lub obiektów. W przypadku gdy spróbujesz wykonać join na tablicy zawierającej obiekt ['word', {}] otrzymasz ciąg znaków "a,[object Object]".

const array = ['Angular', 'jest', 'super'];
const string = array.join(' ');
console.log(string);
/// Angular jest super

Concat

const word = 'super';
const string = 'Angular jest '.concat(word);
console.log(string);
/// Angular jest super

Template Strings (interpolacja ciągów znaków)

const word = 'super';
const string = `Angular jest ${word}`;
console.log(string);
/// Angular jest super

Porównanie wydajności

Jeśli chcesz dowiedzieć się jak zmierzyć czas wykonywania kodu, zajrzyj tutaj.

Wyniki poszczególnych metod łączenia ciągów znakowych dla miliona przypisań (link):

Operator '+’JoinConcatTemplate strings
Próba I7.8s259.7s35.2s14.9s
Próba II9.2s396s37.4s17s
Próba III9s269s42.4s17.1s

Jak pewnie sam zauważyłeś najszybszą metodą łączenia ciągów znakowych w moim przypadku jest operator '+’. Jednak nie jest to reguła! Zależy to między innymi od przeglądarki (a nawet jej wersji). Najczęsciej używanym przeze mnie sposobem jest template string, chociaż zdarza mi się korzystać z concat/join w przypadku łączenia 10+ ciągów znakowych.

Masz inny sposób na łączenie stringów? Jaki według Ciebie jest najlepsze rozwiązanie?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *