860 Stimmen

Wiederholen Sie eine Zeichenfolge in JavaScript eine bestimmte Anzahl von Malen

In Perl kann ich ein Zeichen mehrmals wiederholen, indem ich die Syntax verwende:

$a = "a" x 10; // Ergebnis: "aaaaaaaaaa"

Gibt es eine einfache Möglichkeit, dies in Javascript zu erreichen? Ich kann offensichtlich eine Funktion verwenden, aber ich frage mich, ob es einen integrierten Ansatz oder eine andere clevere Technik gibt.

5voto

yckart Punkte 29968
/**
 * Wiederhole einen String `n`-mal (rekursiv)
 * @param {String} s - Der zu wiederholende String
 * @param {Nummer} n - Die Anzahl der Wiederholungen des Strings
 * @param {String} d - Ein Trennzeichen zwischen jedem String
 */

var repeat = function (s, n, d) {
    return --n ? s + (d || "") + repeat(s, n, d) : "" + s;
};

var foo = "foo";
console.log(
    "%s\n%s\n%s\n%s",

    repeat(foo),        // "foo"
    repeat(foo, 2),     // "foofoo"
    repeat(foo, "2"),   // "foofoo"
    repeat(foo, 2, "-") // "foo-foo"
);

5voto

Jose Rui Santos Punkte 14286

Nur zum Spaß, hier ist eine weitere Möglichkeit, indem Sie die toFixed() Methode verwenden, um Gleitkommazahlen zu formatieren.

Wenn wir folgendes tun:

(0).toFixed(2)
(0).toFixed(3)
(0).toFixed(4)

Erhalten wir:

0,00
0,000
0,0000

Wenn die ersten beiden Zeichen 0. gelöscht werden, können wir dieses wiederholte Muster verwenden, um jede Wiederholung zu erzeugen.

function repeat(str, nTimes) {
  return (0).toFixed(nTimes).substr(2).replaceAll('0', str);
}

console.info(repeat('3', 5));
console.info(repeat('hello ', 4));

0 Stimmen

toFixed kann maximal eine Genauigkeit von 100 verarbeiten. Diese Methode ist wirklich nicht das richtige Werkzeug für diese Aufgabe.

0 Stimmen

@SebastianSimon In Ordnung. Hier sind bessere Lösungen, wenn Sie eine hohe Anzahl von Wiederholungen benötigen.

4voto

csharpfolk Punkte 3956

Ein weiterer interessanter Weg, um schnell n Zeichen zu wiederholen, ist die Verwendung der Idee aus dem schnellen Exponentiationsalgorithmus:

var repeatString = function(string, n) {
    var result = '', i;

    for (i = 1; i <= n; i *= 2) {
        if ((n & i) === i) {
            result += string;
        }
        string = string + string;
    }

    return result;
};

0 Stimmen

Warum sagen Sie "interessanter Weg"? Was ist hier so interessant? Es ist die offensichtliche Lösung, das grundlegendste Beispiel eines Computerprogramms.

2voto

Ezequiel García Punkte 2396

Für die Wiederholung eines Wertes in meinen Projekten benutze ich repeat

Zum Beispiel:

var n = 6;
for (i = 0; i < n; i++) {
    console.log("#".repeat(i+1))
}

Aber sei vorsichtig, denn diese Methode wurde der ECMAScript 6 Spezifikation hinzugefügt.

2voto

alejandro Punkte 2725
function repeatString(n, string) {
  var repeat = [];
  repeat.length = n + 1;
  return repeat.join(string);
}

repeatString(3,'x'); // => xxx
repeatString(10,''); // => ""

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X