Repeat: примеры (JAVASCRIPT)

Использование метода repeat для строк в JavaScript
Раздел: Строки, Дублирование
repeat(count): string

Описание метода repeat

Метод repeat() принадлежит объекту String в JavaScript. Он используется для создания новой строки путем повторения исходной строки заданное количество раз. Этот метод удобен для генерации повторяющихся шаблонов, создания отступов или заполнителей.

Синтаксис метода: str.repeat(count).

  • count: целочисленный аргумент, определяющий, сколько раз повторить строку. Допустимый диапазон: от 0 до положительной бесконечности. Если аргумент не является целым числом, он будет автоматически округлен до ближайшего целого (с помощью метода Math.floor).
  • Возвращаемое значение: новая строка, состоящая из указанного количества копий исходной строки.
  • Если count равен 0, возвращается пустая строка.
  • Если count отрицателен или равен бесконечности (Infinity), генерируется ошибка RangeError.

Простые примеры использования

console.log('Hi'.repeat(3));
HiHiHi
console.log('A'.repeat(5));
AAAAA
console.log('Test'.repeat(0));
(пустая строка)
console.log('Na'.repeat(2) + ' Batman!');
NaNa Batman!
// Дробный аргумент округляется
console.log('X'.repeat(3.7));
XXX

Альтернативные подходы в JavaScript

До появления метода repeat() использовались другие способы.

  • Цикл for: классический, но многословный способ.
  • Метод Array(n).join(str): создание массива заданной длины и объединение его элементов с помощью строки. Не работает, если исходная строка пустая.
  • Рекурсия: редко используется из-за сложности.

Метод repeat() предпочтительнее из-за читаемости и производительности. Альтернативные методы могут быть полезны в старых средах, не поддерживающих ES6.

Распространенные ошибки

// Отрицательное число вызывает ошибку
try {
  'abc'.repeat(-1);
} catch(e) {
  console.log(e.toString());
}
RangeError: Invalid count value
// Бесконечность также вызывает ошибку
try {
  'abc'.repeat(Infinity);
} catch(e) {
  console.log(e.toString());
}
RangeError: Invalid count value
// Нечисловые аргументы преобразуются в число
console.log('Z'.repeat('3')); // Строка '3' преобразуется в число 3
console.log('Z'.repeat(null)); // null преобразуется в 0
ZZZ
(пустая строка)

История изменений

Метод repeat() был стандартизирован в спецификации ECMAScript 2015 (ES6). В более ранних версиях JavaScript этот метод отсутствовал. С момента добавления в стандарт его синтаксис и поведение остаются неизменными. Для поддержки в устаревших браузерах может потребоваться полифилл.

Расширенные примеры применения

Пример javascript
// Создание визуального разделителя в консоли
const separator = '-'.repeat(40);
console.log(separator);
console.log('Начало блока');
console.log(separator);
----------------------------------------
Начало блока
----------------------------------------
Пример javascript
// Формирование строки с отступом
function indentText(text, level) {
    return ' '.repeat(level * 4) + text;
}
console.log(indentText('Отступ 1', 1));
console.log(indentText('Отступ 2', 2));
    Отступ 1
        Отступ 2
Пример javascript
// Генерация простого прогресс-бара
function progressBar(percent, length=20) {
    const filled = '█'.repeat(Math.round(percent/100 * length));
    const empty = '░'.repeat(length - filled.length);
    return `[${filled}${empty}] ${percent}%`;
}
console.log(progressBar(75));
[███████████████░░░░░] 75%
Пример javascript
// Использование с шаблонными строками
const symbol = '★';
const rating = 5;
console.log(`Рейтинг: ${symbol.repeat(rating)}`);
Рейтинг: ★★★★★
Пример javascript
// Проверка на очень большое количество повторений (может быть медленно)
const bigString = 'AB'.repeat(1e5); // 200 тысяч символов
console.log(bigString.length);
200000

Повторение строк в других языках

// PHP
echo str_repeat('Hi', 3);
HiHiHi
// Python
print('Ha' * 3)
HaHaHa
// MySQL
SELECT REPEAT('SQL', 2);
SQLSQL
// C (пример)
#include <stdio.h>
#include <string.h>
int main() {
    char src[] = "C";
    for(int i=0; i<3; i++) printf("%s", src);
    return 0;
}
CCC

Отличия: в Python используется оператор умножения, а не метод. В PHP функция называется str_repeat. В C отсутствует встроенная функция, требуется цикл.

JS repeat function comments

En
Repeat Returns a new string consisting of the specified number of copies of the given string