Qu'est ce qui ne va pas avec mon code?
function longestConsec(strarr, k) {
var currentLongest = "";
var counter = 0;
var outPut = [];
if(strarr.length === 0 || k > strarr.length || k <= 0){
return "";
}
for(var i = 0; i < strarr.length; i++){
if(strarr[i] > currentLongest){
currentLongest = strarr[i];
}
}
while(currentLongest !== strarr[counter]){
counter = counter + 1
}
for (var j = 0; j < k; j ++){
outPut = outPut.Push(strarr[counter + j]);
}
outPut = outPut.join("");
return outPut;
}
Je continue à obtenir "outPut.Push n'est pas une fonction".
Les fonctions Array Push renvoient la longueur du tableau après avoir poussé.
Donc, dans votre code
outPut = outPut.Push(strarr[counter + j]);
outPut est maintenant un nombre, pas un tableau, donc la deuxième fois dans la boucle, outPut n'a plus de méthode Push.
Une solution simple consiste à changer cette ligne en
outPut.Push(strarr[counter + j]);
ajoute un ou plusieurs éléments à la fin d'un tableau et retourne le nouveau longueur du tableau.
Et vous avez cette ligne:
outPut = outPut.Push(strarr[counter + j]);
Vous ajoutez un élément à outPut.Push(strarr[counter + j]);
, puis vous réaffectez outPush
à la longueur du tableau.
Vous ne devriez appeler que la méthode Push
sur le tableau et un nouvel élément sera ajouté:
for (var j = 0; j < k; j ++){
outPut.Push(strarr[counter + j]);
}
Array.Push () renvoie la longueur de ce tableau particulier. Dans votre code, vous attribuez un numéro à outPut
. Désormais, lorsque la boucle s'exécute pour la deuxième fois, outPut
n'est plus un tableau, mais un nombre. Vous obtenez donc l'erreur.
Vous le vérifiez en enregistrant outPut
sur la console. Vous allez voir ça
for (var j = 0; j < k; j ++){
outPut = outPut.Push(strarr[counter + j]);
console.log(outPut);
}
Il montrera:
1
VM696:18 Uncaught TypeError: outPut.Push is not a function
at longestConsec (<anonymous>:18:21)
at <anonymous>:1:1
Tout ce que vous avez à faire est de le changer pour:
for (var j = 0; j < k; j ++){
outPut.Push(strarr[counter + j]);
}