Наиболее эффективный способ объединения строк с использованием аргументов с расширением - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь найти гораздо лучший способ объединения строк в javascript ES6.Ниже приведен фрагмент текущего кода.

Метод 1:

function concat(...strings){
    return ''.concat(...strings);
}

Метод 2:

function concat(...strings){
    return strings.join('');
}

Пример:

concat("Hey", "There", "How", "Are", "You"); // output is "HeyThereHowAreYou"

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

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

/*If you're not sure about nos argument passed then use*/

function concat() {
  const args = Array.from(arguments); /*convert arguments to array*/
  return args.join('');
}

var resultant_str = concat("Hey", "There", "How", "Are", "You");
0 голосов
/ 26 июня 2018

Я бы предложил использовать _. Уменьшить .Говорят, что для конкатенации используется логика + = вокруг массивов строк, и это эффективный jsperf

Фрагмент:

    _.reduce(['x', 'y', 'z'], function(accumulator, currentItem) {
    return accumulator + currentItem;
});
// xyz

Ссылка:

https://jsperf.com/concat-join-reduce

0 голосов
/ 26 июня 2018

Конкатенация строк может быть выполнена разными способами

  • плюс (+).Оператор + выполняет конкатенацию строк, как только один из его операндов является строкой.Затем другой операнд преобразуется в строку.Пример:

    "Скажи привет" + 7 + "раз быстро!"'Скажи привет 7 раз быстрее!'

  • Кроме того, вы можете использовать + = где

    a + = b

    является сокращением для

    a = a + b

  • Объединение массива строк.Соберите строки, которые нужно объединить в массив, и затем присоедините его.

var arr = [];

 arr.push("Say hello ");

 arr.push(7);

 arr.push(" times fast");

 arr.join("")
’Say hello 7 times fast’

Какой из них быстрее?

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

Поэтому языки, такие как C # или Java, чья обработка строк аналогична JavaScript, имеют специальные классы, которые помогают с конкатенацией строк.Например, C # вызывает этот класс StringBuilder.Однако современные движки JavaScript оптимизируют оператор + внутри 1 .Том Шустер упоминает Веревки 2 как один из возможных методов оптимизации.Следовательно, нет необходимости в StringBuilder в JavaScript.

Просто используйте + = и готово.

Ссылки:

«Re: Конкатенация строк »- электронное письмо от Брендана Эйха, в котором говорится, что + на современных движках JavaScript работает быстрее.

« Веревки: альтернатива струнам (1995) » от Hans-J.Бём, Расс Аткинсон, Майкл Пласс.

...