J'essaie de résoudre un défi de code sur les guerres du code et de ne pas comprendre pourquoi je reçois un message d'erreur concernant le C'est définitivement le premier p> .length code> d'une chaîne à l'intérieur d'un tableau lorsque j'essaie de exécuter.
.length code> dans la ligne 7. J'ai essayé d'exécuter d'autres
Arr [i] .Lengths code> et ils fonctionnent, je pense que c'est un problème avec portée? p>
function longestConsec(strarr, k) {
var arr = [];
if (strarr.length == 0 || k > strarr.length || k <= 0) {
return "";
}
for (var i = 1; i <= strarr.length; i++) {
if (strarr[i].length > strarr[0].length && arr.length < k) {
arr.push(strarr[i]);
}
}
arr.join('');
}
longestConsec(["zone", "abigail", "theta", "form", "libe", "zas"], 2);
4 Réponses :
Les éléments d'un tableau aller de 0 à Vous avez 6 chaînes dans le tableau, le dernier ayant l'index 5. p> parce que La condition définie que vous devez itération pendant que l'index est inférieur ou Vous devez modifier la condition de l'itération: p> longueur - 1 code>.
ferrar.length code> Il essaie d'itérer le 6ème élément, ce qui n'existe pas. P>
function longestConsec(strarr, k) {
var arr = [];
if (strarr.length == 0 || k > strarr.length || k <= 0) {
return "";
}
for (var i = 1; i < strarr.length; i++) {
if (strarr[i].length > strarr[0].length && arr.length < k) {
arr.push(strarr[i]);
}
}
arr.join('');
alert(arr);
}
longestConsec(["zone", "abigail", "theta", "form", "libe", "zas"], 2);
Je pense que i b> devrait être démarrer à 1 b>.
Cela "corrige" le code de l'OP, mais pour ce que cela vaut, je ne pense pas que le code lui-même fait de quoi s'attends.
C'est là, merci beaucoup, je ne sais pas comment je n'ai pas attrapé ça!
@Hyuckkang - Droite, op est comparant le premier élément de la matrice avec le reste d'entre eux. Corrigée.
Vous êtes itération sur le tableau avec les mauvaises limites. P>
Vous devriez le changer entrée. Longueur - 1. P>
ou retirer le moins ou égal et l'utiliser que moins que l'opérateur p>
Étant donné que l'index du dernier élément accessible dans une matrice est la longueur de la matrice moins 1 p>
Comme indiqué, vous êtes itérant une fois trop nombreux. Votre itération finale essaiera d'accéder à un index qui n'existe pas dans votre tableau.
Cela de côté, votre code ne semble pas fonctionner comme vous le décrivez. Il ne traite pas du "plus long" à aucun moment, mais il suffit de saisir les deux premières chaînes plus longues que la première. P>
Si vous vouliez trouver des chaînes consécutives qui se combinent pour la longueur la plus longue, considérez quelque chose comme ça à la place: p>
p>
.as-console-wrapper {max-height: none !important; top: 0;}
Y compris les limites seraient utiles si vous pouviez modifier votre question. Avez-vous fait un
console.log () code> ou un débogage général pour savoir où il va mal au lieu de supposer / deviner?
Just édité, merci.
Quelle est la valeur de
strarr code> et
k code> lorsque la fonction est appelée?
L'itération finale de votre
pour code> est
i = 6 code>. Votre tableau n'a aucun élément avec un index de
6 code>, donc
strarron [6] code> est
non défini code>.
Starr est une gamme de cordes; k est un entier;
De plus, tandis que le but du code n'est pas totalement clair, je ne pense pas que votre logique soit correcte. Ce code ne se soucie pas de la durée de la durée des cordes - seulement qu'ils sont plus longs que la première chaîne de la matrice. Si vous avez deux énormes chaînes à la fin de la matrice, il suffira de retourner
abigailtheta code>.