Ich habe Code geschrieben, um die n-längste Zeichenfolge in einem Array von Strings zu bestimmen. Im Folgenden habe ich Testfälle aufgelistet, die in der Codewars-Kata aufgeführt sind.nth Längste String Sortierung
Anweisungen: Implementieren Sie die Funktion am längsten (Array, n), wo Sie ein Array von Strings erhalten und dann die n-te längste Zeichenfolge in diesem Array zurückgeben. z.B. arr = ['Hallo', 'Welt', 'Codewars', 'Katas'] n = 3; sollte 'Welt' zurückgeben, weil 'Codewars' Länge = 8, 'Hallo' Länge = 5, also das zweitlängste Wort und dann 'Welt' (obwohl auch Wortlänge von 5, 'Welt' nach 'Hallo' in der Array). Wenn Wörter die gleiche Länge haben, behandeln Sie sie in der Reihenfolge, in der sie im Array vorhanden sind. Array wird niemals leer sein und n> 0 immer.
Test.assertEquals(longest(['Hello','World','Codewars','Katas'],3),'World');
Test.assertEquals(longest(['Hello','World','Codewars','Katas'],4),'Katas');
Test.assertEquals(longest(['aa', 'bb', 'cc', 'dd', 'eee', 'b', 'f', 'ff', 'hhh', 'gggg'],4),'aa');
Test.assertEquals(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'],1),'a');
Test.assertEquals(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k','l'],1),'a');
Ich habe alle der codewars Testfälle mit Ausnahme der letzten mit der Anordnung der Endung ‚l‘ übergeben. Meine Codezeile für die Sortierung scheint das "f" an der nullten Stelle für diesen Testfall zu platzieren und ich verstehe nicht warum.
function longest(arr, n) {
arrLength = [];
arr.sort(function(a, b){return b.length - a.length});
console.log(arr);
arr.forEach(function(numArray){
return arrLength.push(numArray.length);
});
return arr[n-1];
}
console.log(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'],1));
// Sorted Array: ["a", "b", "c", "d", "e", "f", "g", "h", "i", "k"]
// returns a
console.log(longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l'],1));
// Sorted Array: ["f", "a", "c", "d", "e", "b", "g", "h", "i", "k", "l"]
// returns f
Ich kann nicht scheinen, warum meine Sortierfunktion, um herauszufinden, „f“ in der nullten Position bringt, wenn die ‚l‘ bis zum Ende des String-Array hinzugefügt wird.
Ihre Sortierfunktion misst die Länge. Warum sollten Sie eine bestimmte Bestellung erwarten, wenn alle Artikel gleich lang sind? – bhspencer
Vielen Dank für Ihre Hilfe. Ich schätze wirklich Ihren Beitrag zu meiner Frage ... –