Ich weiß, wie ich das längste Wort in einer Zeichenfolge finden kann. Zum Beispiel diesen Code hier. Aber hier ist das Problem, dass das Wort "bbbbbb" gefunden wird, weil er das ERSTE LÄNGSTE WORT IN DER Zeichenfolge ist. Danach haben wir mit 6 Zeichen auch das Wort "gesprungen". Meine Frage ist, wie kann ich in diesem Fall und das Wort "gesprungen" finden, also alle nicht nur das erste.
UPDATE: Ich möchte eine eindeutige Liste, also nur eines von jedem Wort
function longestWord(sentence) {
sentence = sentence.split(' ');
let theWord = sentence[0];
var longest = 0;
for (let i = 0; i < sentence.length; i++) {
if (sentence[i] != "") {
if (sentence[i].length > theWord.length) {
longest = sentence[i].length;
theWord = sentence[i];
}
}
}
return {
length: longest,
actuallWord: theWord
}
}
console.log(longestWord("The quick brown as bbbbbb fox jumped over the bbbbbb lazy dog"));
javascript
arrays
string
Trajce12
quelle
quelle
sentence.filter(w => w.length === longest)
, eine Reihe von Wörtern mit dieser Länge zu erhalten.Antworten:
quelle
Sie können einen Einzelschleifenansatz wählen und die Länge jedes Wortes mit der Akkumulatorlänge des ersten Elements überprüfen.
quelle
Sie können dies mit
Array.prototype.reduce()
einem einzigen Durchgang durch das Array tun (ohne zusätzliche Schleife zur Berechnung der maximalen Länge).Die Idee ist, das resultierende Array mit einem einzelnen Wort zurückzusetzen, sobald seine Länge die zuvor eingefügten überschreitet oder anhängt, wenn das aktuelle Wort zufällig dieselbe Länge hat, oder einfach auf andere Weise vorbeizukommen:
quelle
length
undwords
).Sie können dies tun, indem Sie das
sentence
Array reduzieren .Der Vorteil dieses Ansatzes besteht darin, dass das Array nur einmal durchlaufen wird:
Wenn Sie doppelte Wörter herausfiltern möchten, können Sie
Set
stattdessen Folgendes zurückgeben:quelle
Sie können überprüfen, ob die Länge des Wortes größer oder gleich der Länge des ersten Elements des Arrays ist (alle Elemente im Array sollten dieselbe Länge haben).
Wenn ja, prüfen Sie, ob es größer ist. Wenn dies zutrifft, setzen Sie das Array auf dieses Wort, da Sie ein Wort gefunden haben, das größer als die Wörter im Array war. Andernfalls fügen Sie es dem Array der Wörter mit der größten Länge hinzu.
quelle
Es kann auch in Einzelreduzierung erfolgen.
Mit dem Objekt initiiert.
quelle
Dieser Ansatz hat keine bessere Zeitkomplexität als die besten Antworten hier, aber bessere Koeffizienten. (Es durchläuft das Array von Wörtern nur einmal, keine Funktionsaufrufe außer
Array.prototype.push
).quelle