В наши дни repeat
строковый метод реализован практически везде. (Это не в Internet Explorer .) Поэтому, если вам не требуется поддержка старых браузеров, вы можете просто написать:
"a".repeat(10)
Ранее repeat
мы использовали этот хак:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Обратите внимание, что массив длиной 11 дает вам только 10 «а», поскольку он Array.join
помещает аргумент между элементами массива.)
Саймон также указывает, что в соответствии с этим jsperf , кажется, что в Safari и Chrome (но не в Firefox) быстрее повторять символ несколько раз, просто добавляя цикл for (хотя и менее сжатый).
Джейсон Орендорфф
источник
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Когда n = 0, это возвращает пустую строку, а когда n = 1, это возвращает"a"
. Поэтому я думаю, что это работает во всех случаях.В новой гармонии ES6 у вас будет собственный способ сделать это с повторением . Также ES6 сейчас только экспериментальная, эта функция уже доступна в Edge, FF, Chrome и Safari
И конечно, если функция повтора недоступна, вы можете использовать old-good
Array(n + 1).join("abc")
источник
Удобно, если вы много повторяете
источник
repeat(str, n)
.n= n || 1
часть (или проверил, еслиn
она не определена), так что вы также можете повторить0
время.String.repeat
был добавлен только в ES6, который не был завершен до июня 2015 года. Так что я думаю, что моя точка зрения была действительной, когда я написал ее в 2012 году. :)Самый эффективный способ - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
Короткая версия ниже.
Polyfill от Mozilla:
источник
count >>>= 1, pattern += pattern;
? что это за заявление?if (!String.prototype.repeat) {
начало и}
конец.Альтернатива:
Если вам нужно повторить несколько символов, умножьте свое условие:
ПРИМЕЧАНИЕ: вам не нужно превышать 1, как с
word = Array(11).join('a')
источник
Если вы не против включения библиотеки в ваш проект, у lodash есть функция повтора.
https://lodash.com/docs#repeat
источник
Для всех браузеров
Следующая функция будет работать намного быстрее, чем опция, предложенная в принятом ответе:
Вы бы использовали это так:
Чтобы сравнить производительность этой функции с опцией, предложенной в принятом ответе, см. Эту скрипку и эту скрипку для эталонных тестов.
Только для современных браузеров
В современных браузерах вы можете сделать это, используя
String.prototype.repeat
метод:Подробнее об этом методе читайте на MDN .
Этот вариант еще быстрее. К сожалению, это не работает ни в одной версии Internet Explorer. Числа в таблице указывают первую версию браузера, которая полностью поддерживает метод:
источник
Хотя ответ с наибольшим количеством голосов немного более компактен, при таком подходе вам не нужно добавлять дополнительный элемент массива.
источник
fill()
если вы делаете то же самое сjoin("a")
одним ...источник
В ES2015 / ES6 вы можете использовать
"*".repeat(n)
Так что просто добавьте это в свои проекты, и вы готовы к работе.
источник
Другой интересный способ быстро повторить n символов - использовать идею из алгоритма быстрого возведения в степень:
источник
Для повторения значения в моих проектах я использую повторение
Например:
но будьте осторожны, потому что этот метод был добавлен в спецификацию ECMAScript 6.
источник
источник
Вот что я использую:
источник
Я собираюсь расширить ответ @ Bonbon . Его метод - это простой способ «добавить N символов в существующую строку», на всякий случай, если кому-то понадобится это сделать. Например, «гугл» - это 1, за которым следуют 100 нулей .
ПРИМЕЧАНИЕ. Необходимо добавить длину исходной строки к условному условию.
источник
Lodash предлагает функцию, аналогичную функции Javascript repeat (), которая доступна не во всех браузерах. Он называется _.repeat и доступен начиная с версии 3.0.0:
источник
источник
Может использоваться как однострочник:
источник
В CoffeeScript:
источник
Вот как вы можете вызвать функцию и получить результат с помощью Array () и join ().
источник
источник
String.prototype.repeat
то, что изначально включено в существующие браузеры. Кроме того, зачем минимизировать это? Вам не нужно писать все это в одну строку.Вот версия ES6
источник