Nur zum Spaß, schrieb ich ein schnelles Skript, um eine Zeichenfolge mit durch Komma getrennten Zeichen, verwende ich die Kommas, um ein anderes Wort, und ich ein Array mit den Worten als Elemente ausgeben . Mein Problem ist mit meiner Logik - das funktioniert nur für Kommas in der ursprünglichen Zeichenfolge.JS konvertieren Begrenzer getrennte Zeichenfolge zu Array-Elementen
Was passiert, ist, dass der Algorithmus nur das erste Element (ein Komma) im Delimiter-Array betrachtet, das ich beim Aufruf meiner Funktion zur Verfügung stelle. Ich denke darüber nach, einen Boolean als Flagge zu benutzen, aber ich bin mir nicht sicher, ob das wirklich der beste Weg ist. Irgendein Rat?
var stringToArray = function(delimiterArray, originalString) {
var arrayOutput = []
var tempWord = ""
for (var i = 0; i < originalString.length; i++) {
for (var j = 0; j < delimiterArray.length; j++) {
var currentCharacter = originalString.charAt(i)
var currentDelimiter = delimiterArray[j]
while (currentCharacter != currentDelimiter) {
tempWord += currentCharacter
//once we hit a delimiter, break so that we can move onto the next conditional statement.
break
}
if (currentCharacter === currentDelimiter) {
//push word onto the array to hold each string, and then break out so we can go back to the iteration of the nested loops
arrayOutput.push(tempWord)
tempWord = ""
break
}
//we break out of the second for loop ->
break
}
}
return arrayOutput
}
delims = [',', '.', ';', ' ']
originalString = "USA,Canada,Mexico,Bermuda,Grenada,Belize"
finalOutput = stringToArray(delims, originalString)
console.log(finalOutput)
Wenn ich einen '' Als Trennzeichen in der Zeichenfolge, die ich als Argument verwende, schlägt mein Algorithmus fehl. Ich habe dies in C mit booleschen Flags (vor langer Zeit) implementiert, wo ich viel mehr Code schreiben musste, weil ich keine eingebauten Funktionen benutzte (musste die Länge von allem finden, um genügend Speicher für Datenstrukturen zu haben) Sachen lagern). Ich möchte diesen alten Code jedoch nicht noch einmal aufgreifen.
Javascript hat bereits ein 'split()' Funktion, dies zu tun. Wenn Sie ein Array nach etwas suchen möchten, können Sie 'indexOf()' verwenden, anstatt eine eigene Schleife zu schreiben. – Barmar
@Barmar Ja, voll bewusst. Wie in der ersten Zeile gesagt, war dies nur zum Spaß. Ich möchte es selbst implementieren. –
Ihre 'while()' - Schleife ändert nie 'currentCharacter' oder' currentDelimiter', so dass es für immer eine Schleife bildet. – Barmar