das scheint einfach, aber ich habe immer noch Schwierigkeiten (ich bin relativ neu).JS - Funktion wiederholen bis Bedingung erfüllt
Ich habe eine Funktion replaceNextParameter()
, die eine Zeichenfolge durchläuft und Text zwischen zwei Zeichenfolgen ersetzt, die ich notiere als sub1
und sub2
. Eine Zeichenfolge kann 0, 1 oder viele sub1
und sub2
vorhanden sein. Ich möchte, dass es die Funktion replaceNextparameter
ausführt, bis sub1
und sub2
nicht mehr vorhanden sind und das Ergebnis zurückgibt.
Hier ist meinen Code:
function findAllParametersInString (string, sub1, sub2, parameterAndInputArray) {
newString = string
if (newString.indexOf(sub1) > -1 && newString.indexOf(sub2) > -1) {
newString = replaceNextParameter(sub1, sub2, newString, parameterAndInputArray);
}
return newString
};
Hier ist ein Live-Beispiel von dem, was sie tun sollten.
//data:
const paramsArray = [
{param: "company", input: "COMPANY"},
{param: "url", input: "URL"},
]
const sampleMessage = "BlaBlaBla {{company}} and {{url}}"
findAllParametersInString(sampleMessage,'{{', '}}', paramsArray);
//Should return "BlaBlaBla COMPANY and URL"
Irgendeine Idee, wie man es repariert? Derzeit ist nur gibt sie "BlaBlaBla COMPANY and {{url}}"
Lösung:
function findAllParametersInString (string, sub1, sub2, parameterAndInputArray) {
newString = string
while (newString.indexOf(sub1) > -1 && newString.indexOf(sub2) > -1) {
newString = replaceNextParameter(sub1, sub2, newString, parameterAndInputArray);
}
return newString
};
Schauen Sie sich mit einer 'while' Schleife an. Die grundlegende Beschreibung Ihrer Logik ist "solange die Bedingung wahr ist, tun Sie etwas", was genau die Art von Problem ist, für die eine "while" -Schleife entworfen wurde. Rekursion ist auch eine Option, aber ist weit weniger effizient und nicht annähernd so lesbar. –
Vielen Dank @Flemming, ich habe es untersucht, aber ich bin mir nicht sicher, wie es die Funktion wiederholen UND jedes Mal das neue Ergebnis zurückgeben soll, irgendwelche Ideen? –
Ich bin ein Idiot, ich habe es einfach nicht richtig benutzt, 'während' funktioniert! –