Hoje em dia, o repeat
método string é implementado em quase todos os lugares. (Não está no Internet Explorer .) Portanto, a menos que você precise oferecer suporte a navegadores antigos, basta escrever:
"a".repeat(10)
Antes repeat
, usamos esse hack:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Observe que uma matriz de comprimento 11 fornece apenas 10 "a" s, pois Array.join
coloca o argumento entre os elementos da matriz.)
Simon também aponta que, de acordo com este jsperf , parece mais rápido no Safari e no Chrome (mas não no Firefox) repetir um caractere várias vezes, simplesmente anexando usando um loop for (embora um pouco menos conciso).
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Quando n = 0, isso retorna a cadeia vazia e, quando n = 1, ele retorna"a"
. Então eu acho que funciona em todos os casos.Em uma nova harmonia ES6, você terá uma maneira nativa de fazer isso com repetição . Também no ES6, agora apenas experimental, esse recurso já está disponível no Edge, FF, Chrome e Safari
E certamente, se a função de repetição não estiver disponível, você poderá usar o antigo
Array(n + 1).join("abc")
fonte
Conveniente se você se repetir bastante:
fonte
repeat(str, n)
.n= n || 1
peça (ou verificava se nãon
está definida), para que você também possa repetir os0
tempos.String.repeat
foi adicionado apenas no ES6, que não foi finalizado até junho de 2015. Acho que meu argumento foi válido quando o escrevi em 2012. :)A maneira mais econômica de desempenho é https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
A versão curta está abaixo.
Polyfill da Mozilla:
fonte
count >>>= 1, pattern += pattern;
? que tipo de afirmação é essa?if (!String.prototype.repeat) {
ao início e}
ao fim.Uma alternativa é:
Se você precisar repetir vários caracteres, multiplique seu condicional:
NOTA: Você não precisa exceder em 1, como ocorre com
word = Array(11).join('a')
fonte
Se você não se opõe a incluir uma biblioteca em seu projeto, o lodash tem uma função de repetição.
https://lodash.com/docs#repeat
fonte
Para todos os navegadores
A função a seguir terá um desempenho muito mais rápido que a opção sugerida na resposta aceita:
Você usaria assim:
Para comparar o desempenho desta função com o da opção proposta na resposta aceita, consulte este Fiddle e este Fiddle para obter referências.
Apenas para navegadores modernos
Nos navegadores modernos, agora você pode fazer isso usando o
String.prototype.repeat
método:Leia mais sobre esse método no MDN .
Esta opção é ainda mais rápida. Infelizmente, ele não funciona em nenhuma versão do Internet Explorer. Os números na tabela especificam a primeira versão do navegador que suporta totalmente o método:
fonte
Embora a resposta mais votada seja um pouco mais compacta, com essa abordagem, você não precisa adicionar um item de matriz extra.
fonte
fill()
se fazer o mesmo comjoin("a")
sozinho ...fonte
No ES2015 / ES6, você pode usar
"*".repeat(n)
Então, basta adicionar isso aos seus projetos, e você estará pronto.
fonte
Outra maneira interessante de repetir rapidamente o caractere n é usar a ideia do algoritmo de exponenciação rápida:
fonte
Para repetir um valor em meus projetos eu uso repeat
Por exemplo:
mas tenha cuidado, pois esse método foi adicionado à especificação do ECMAScript 6.
fonte
fonte
Aqui está o que eu uso:
fonte
Vou expandir a resposta do @ bonbon . Seu método é uma maneira fácil de "anexar N caracteres a uma string existente", caso alguém precise fazer isso. Por exemplo, como "a google" é 1 seguido por 100 zeros .
NOTA: Você precisa adicionar o comprimento da seqüência original à condicional.
fonte
O Lodash oferece uma funcionalidade semelhante à função repeat () do Javascript, que não está disponível em todos os navegadores. É chamado _.repeat e está disponível desde a versão 3.0.0:
fonte
fonte
Também pode ser usado como uma linha:
fonte
No CoffeeScript:
fonte
é assim que você pode chamar uma função e obter o resultado com a ajuda de Array () e join ()
fonte
fonte
String.prototype.repeat
que é incluído nativamente nos navegadores atuais. Além disso, por que minificá-lo? Você não precisa escrever tudo em uma linha.Aqui está uma versão do ES6
fonte