Saat ini, repeat
metode string diimplementasikan hampir di semua tempat. (Ini tidak ada di Internet Explorer .) Jadi kecuali Anda perlu mendukung browser lama, Anda bisa menulis:
"a".repeat(10)
Sebelumnya repeat
, kami menggunakan retasan ini:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(Perhatikan bahwa array dengan panjang 11 hanya memberi Anda 10 "a", karena Array.join
menempatkan argumen di antara elemen-elemen array.)
Simon juga menunjukkan bahwa menurut jsperf ini , tampaknya lebih cepat di Safari dan Chrome (tetapi bukan Firefox) untuk mengulangi karakter beberapa kali hanya dengan menambahkan menggunakan for for (walaupun agak kurang ringkas).
Array(rawValue.length + 1).join("*")
Array(n+1).join("a")
. Ketika n = 0, ini mengembalikan string kosong, dan ketika n = 1, itu mengembalikan"a"
. Jadi saya pikir itu berfungsi dalam semua kasus.Dalam harmoni ES6 baru, Anda akan memiliki cara asli untuk melakukan ini dengan berulang . Juga ES6 sekarang hanya eksperimental, fitur ini sudah tersedia di Edge, FF, Chrome dan Safari
Dan tentunya jika fungsi repeat tidak tersedia Anda bisa menggunakan yang lama-bagus
Array(n + 1).join("abc")
sumber
Nyaman jika Anda sering mengulangi:
sumber
repeat(str, n)
.n= n || 1
bagian (atau memeriksa apakahn
tidak terdefinisi), sehingga Anda juga dapat mengulangi0
kali.String.repeat
hanya ditambahkan dalam ES6, yang belum selesai sampai Juni 2015. Jadi saya pikir poin saya valid ketika saya menulisnya pada tahun 2012. :)Cara yang paling berkinerja baik adalah https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
Versi singkat di bawah.
Polyfill dari Mozilla:
sumber
count >>>= 1, pattern += pattern;
? pernyataan macam apa itu?if (!String.prototype.repeat) {
ke awal dan}
ke akhir.Alternatifnya adalah:
Jika Anda perlu mengulang beberapa karakter, gandakan persyaratan Anda:
CATATAN: Anda tidak perlu melakukan overshoot oleh 1 seperti pada
word = Array(11).join('a')
sumber
Jika Anda tidak menentang untuk memasukkan perpustakaan dalam proyek Anda, lodash memiliki fungsi berulang.
https://lodash.com/docs#repeat
sumber
Untuk semua browser
Fungsi berikut akan melakukan jauh lebih cepat daripada opsi yang disarankan dalam jawaban yang diterima:
Anda akan menggunakannya seperti ini:
Untuk membandingkan kinerja fungsi ini dengan opsi yang diusulkan dalam jawaban yang diterima, lihat Fiddle dan Fiddle ini untuk tolok ukur.
Hanya untuk peramban modern
Di browser modern, Anda sekarang dapat melakukan ini menggunakan
String.prototype.repeat
metode:Baca lebih lanjut tentang metode ini di MDN .
Opsi ini bahkan lebih cepat. Sayangnya, itu tidak berfungsi di versi Internet Explorer apa pun. Angka-angka dalam tabel menentukan versi browser pertama yang sepenuhnya mendukung metode ini:
sumber
Meskipun jawaban yang paling banyak dipilih sedikit lebih kompak, dengan pendekatan ini Anda tidak perlu menambahkan item array tambahan.
sumber
fill()
jika Anda melakukan hal yang sama denganjoin("a")
sendirian ...sumber
Di ES2015 / ES6 Anda dapat menggunakan
"*".repeat(n)
Jadi tambahkan saja ini ke proyek Anda, dan Anda siap melakukannya.
sumber
Cara lain yang menarik untuk mengulangi n karakter dengan cepat adalah dengan menggunakan ide dari algoritma eksponensial cepat:
sumber
Untuk mengulang nilai dalam proyek saya, saya menggunakan repeat
Sebagai contoh:
tapi hati-hati karena metode ini telah ditambahkan ke spesifikasi ECMAScript 6.
sumber
sumber
Inilah yang saya gunakan:
sumber
Saya akan memperluas jawaban @ bonbon . Metodenya adalah cara mudah untuk "menambahkan N karakter ke string yang ada", kalau-kalau ada yang perlu melakukan itu. Misalnya karena "a google" adalah 1 diikuti oleh 100 nol .
CATATAN: Anda harus menambahkan panjang string asli ke kondisional.
sumber
Lodash menawarkan fungsionalitas yang serupa dengan fungsi Javascript repeat () yang tidak tersedia di semua browser. Ini disebut _.ulangi dan tersedia sejak versi 3.0.0:
sumber
sumber
Dapat digunakan sebagai one-liner juga:
sumber
Dalam CoffeeScript:
sumber
ini adalah bagaimana Anda dapat memanggil suatu fungsi dan mendapatkan hasilnya dengan bantuan Array () dan bergabung ()
sumber
sumber
String.prototype.repeat
yang secara bawaan termasuk dalam browser saat ini. Juga, mengapa dikurangi? Anda tidak perlu menulis semuanya dalam satu baris.Ini adalah versi ES6
sumber