JavaScriptNapisy

String.prototype.repeat()

Zwraca nowy napis złożony z podanej liczby powtórzeń oryginału.

Zwraca
Nowy napis zawierający count kopii oryginału.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
console.log('=-'.repeat(10))
console.log('★'.repeat(4))
console.log('ha'.repeat(3))
Konsola
=-=-=-=-=-=-=-=-=-=-
★★★★
hahaha

Definicja i zastosowanie

#

Metoda repeat() skleja napis sam ze sobą tyle razy, ile wskażesz. "ab".repeat(3) daje "ababab", a repeat(0) zwraca pusty napis.

Przydaje się do generowania separatorów, wcięć, prostych pasków postępu, gwiazdek w ocenach czy maskowania fragmentu tekstu. Zamiast pętli sklejającej znaki wystarczy jedno wywołanie.

Liczba powtórzeń musi być nieujemna i skończona. Wartość ujemna lub Infinity powoduje błąd RangeError, a ułamki są ucinane, więc 2.7 działa jak 2. Oryginał pozostaje bez zmian.

Składnia

#
Składnia
string.repeat(count)

Parametry

#
  • count

    number

    Liczba powtórzeń od 0 wzwyż. Ułamek jest ucinany, a wartość ujemna lub nieskończona rzuca RangeError.

Więcej przykładów

#
Pasek postępu
JavaScript
function progressBar(done, total) {
  const filled = Math.round((done / total) * 10)
  return '█'.repeat(filled) + '░'.repeat(10 - filled) + ` ${done}/${total}`
}

console.log(progressBar(3, 10))
console.log(progressBar(7, 7))
Konsola
███░░░░░░░ 3/10
██████████ 7/7
Wcięcia w drzewie kursu
JavaScript
const tree = [
  ['Kurs', 0],
  ['Moduł 1', 1],
  ['Lekcja 1', 2],
  ['Moduł 2', 1]
]

for (const [label, depth] of tree) {
  console.log(' '.repeat(depth * 2) + label)
}
Konsola
Kurs
Moduł 1
Lekcja 1
Moduł 2
Ułamki, zero i wartości ujemne
JavaScript
console.log('ab'.repeat(2.7))
console.log('ab'.repeat(0).length)

try {
  'ab'.repeat(-1)
} catch (error) {
  console.log(error.name)
}
Konsola
abab
0
RangeError

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Liczba powtórzeń wyliczana z danych, np. 10 - filled, może wyjść ujemna. Zabezpiecz ją przez Math.max(0, n), żeby uniknąć RangeError.
  • Bardzo duża liczba powtórzeń tworzy ogromny napis i może zawiesić stronę. Silnik ma też górny limit długości napisu.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.