En estos días, el repeat
método de cadena se implementa en casi todas partes. (No está en Internet Explorer ). Entonces, a menos que necesite admitir navegadores más antiguos, simplemente puede escribir:
"a".repeat(10)
Antes repeat
, usamos este truco:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Tenga en cuenta que una matriz de longitud 11 solo obtiene 10 "a" s, ya que Array.join
coloca el argumento entre los elementos de la matriz).
Simon también señala que de acuerdo con este jsperf , parece que es más rápido en Safari y Chrome (pero no en Firefox) repetir un personaje varias veces simplemente agregando usando un bucle for (aunque un poco menos conciso).
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Cuando n = 0, esto devuelve la cadena vacía, y cuando n = 1, devuelve"a"
. Entonces creo que funciona en todos los casos.En una nueva armonía ES6, tendrá una forma nativa de hacer esto con la repetición . También ES6 ahora solo experimental, esta característica ya está disponible en Edge, FF, Chrome y Safari
Y seguramente si la función de repetición no está disponible, puede usar old-good
Array(n + 1).join("abc")
fuente
Conveniente si te repites mucho:
fuente
repeat(str, n)
.n= n || 1
parte (o comprobaría sin
no está definida), para que también pueda repetir los0
tiempos.String.repeat
solo se agregó en ES6, que no se finalizó hasta junio de 2015. Así que creo que mi punto era válido cuando lo escribí en 2012. :)La forma más inteligente de rendimiento es https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
La versión corta está abajo.
Polyfill de Mozilla:
fuente
count >>>= 1, pattern += pattern;
? ¿Qué tipo de declaración es?if (!String.prototype.repeat) {
al principio y}
al final.Una alternativa es:
Si necesita repetir varios caracteres, multiplique su condicional:
NOTA: No tiene que sobrepasar en 1 como con
word = Array(11).join('a')
fuente
Si no se opone a incluir una biblioteca en su proyecto, lodash tiene una función de repetición.
https://lodash.com/docs#repeat
fuente
Para todos los navegadores
La siguiente función funcionará mucho más rápido que la opción sugerida en la respuesta aceptada:
Lo usarías así:
Para comparar el rendimiento de esta función con el de la opción propuesta en la respuesta aceptada, vea este violín y este violín para obtener puntos de referencia.
Solo para navegadores modernos
En los navegadores modernos, ahora puede hacer esto usando el
String.prototype.repeat
método:Lea más sobre este método en MDN .
Esta opción es aún más rápida. Desafortunadamente, no funciona en ninguna versión de Internet Explorer. Los números en la tabla especifican la primera versión del navegador que soporta totalmente este método:
fuente
Aunque la respuesta más votada es un poco más compacta, con este enfoque no tiene que agregar un elemento de matriz adicional.
fuente
fill()
si lo hace lo mismo conjoin("a")
solo ...fuente
En ES2015 / ES6 puedes usar
"*".repeat(n)
Así que solo agregue esto a sus proyectos, y estará listo para comenzar.
fuente
Otra forma interesante de repetir rápidamente n caracteres es usar la idea del algoritmo de exponenciación rápida:
fuente
Para repetir un valor en mis proyectos, uso repetir
Por ejemplo:
pero tenga cuidado porque este método se ha agregado a la especificación ECMAScript 6.
fuente
fuente
Esto es lo que uso:
fuente
Voy a ampliar la respuesta de @bonbon . Su método es una manera fácil de "agregar N caracteres a una cadena existente", en caso de que alguien necesite hacer eso. Por ejemplo, dado que "un google" es un 1 seguido de 100 ceros .
NOTA: Debe agregar la longitud de la cadena original al condicional.
fuente
Lodash ofrece una funcionalidad similar a la función de repetición () de Javascript que no está disponible en todos los navegadores. Se llama _.repeat y está disponible desde la versión 3.0.0:
fuente
fuente
También se puede usar como una sola línea:
fuente
En CoffeeScript:
fuente
así es como puede llamar a una función y obtener el resultado con la ayuda de Array () y join ()
fuente
fuente
String.prototype.repeat
que se incluye de forma nativa en los navegadores actuales. Además, ¿por qué minificarlo? No necesita escribirlo todo en una línea.Aquí hay una versión ES6
fuente