J'essaie de vérifier que le premier tableau contient les mêmes valeurs de la deuxième matrice. Cependant, je suis confus sur mon code.
La première question est la suivante: pourquoi mon code exécute mon autre relevé si toutes les lettres du premier tableau sont contenues dans la seconde? Il exécutera 2 lignes de "Ceci n'est pas valide" p>
Deuxième question est la suivante: Si mon premier tableau contient une lettre en double, il passera toujours le chèque E.g ["A", "B", "A", "D", "E", "F"]; Même s'il y a deux A est dans le premier, il verra le même "A" à nouveau. N'importe qui connaît un moyen autour de cela. P>
Désolé pour mes longues questions sinueuses mais j'espère que cela a du sens. Merci:) P>
var letters = ["a", "b" , "c", "d", "e", "f"]; var otherLetters = ["a","b", "c" , "d", "e", "f"]; var i = -1; while(i<=letters.length){ i++; if(otherLetters.includes(letters[i])){ console.log("This is valid"); } else console.log("This is not valid"); }
7 Réponses :
Vous n'avez pas fermé les crochets. Et votre boucle est très déroutante, veuillez utiliser des objets. Voici un exemple de travail:
Merci Nico, je me sens assez stupide maintenant haha. Merci pour votre réponse a été capable de réparer mon code :)
Vous essayez d'accéder aux éléments de tableau qui sont hors limites. Le script exécute 8 itérations sur un tableau avec 6 éléments. P>
Merci Matthias, j'ai eu trié maintenant :)
Tout d'abord, vous avez défini i = -1 qui est confus puisque la position de départ de la matrice est 0. La raison pour laquelle votre boucle fonctionne deux fois plus est parce que la boucle a commencé à -1 au lieu de 0 et ensuite la condition i <= longueur. p>
Etant donné que [Longueur de tableau = Dernier index + 1] Votre boucle fonctionne deux fois supplémentaires.
Juste pour que votre code fonctionne, assigner var i = 0 et pendant que la condition i
La solution la plus simple utilise Lodash . Il a toutes les optimisations hors de la case:
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
Les matrices sont basées sur l'index et commence à partir de 0. SO, la vérification de -1 et moins que les lettres.length version met le code dans les limites.
var letters = ["a", "b" , "c", "d", "e", "f"]; var otherLetters = ["a","b", "c" , "d", "e", "f"]; var i = 0; while(i<letters.length) { if(otherLetters.includes(letters[i])) { console.log("This is valid"); } else { console.log("This is not valid"); } i++; }
Merci Abhishek! Je ne sais pas pourquoi j'ai décidé de commencer de -1 tbh. Je pense que mon cerveau est frit lol.
Vous pouvez utiliser une combinaison de array.pototype.eudy code> avec array.pototype.inclut code>
, ainsi que quelques clauses de garde supplémentaires.
p>
const areSequenceEqual = (arr1, arr2) => { if (!arr1 || !arr2) { return false; } if (arr1.length !== arr2.length) { return false; } return arr1.every(x => arr2.includes(x)); }; const letters = ["a", "b", "c", "d", "e", "f"]; const otherLetters = ["a", "b", "c", "d", "e", "f"]; const someOtherLetters = ["a", "b", "c", "d", "e", "f", "g"]; console.log(areSequenceEqual(letters, otherLetters)); console.log(areSequenceEqual(letters, undefined)); console.log(areSequenceEqual(letters, someOtherLetters));
Merci Kunal, j'ai pu utiliser la méthode incluse pour résoudre mon problème :)
rien à craindre, cpog90.
Essayez cette solution. strong> p> p> var letters = ["a", "b" , "c", "d", "e", "f"];
var otherLetters = ["a","b", "c" , "d", "e", "f"];
var i = 0;
while(i<letters.length){
if(otherLetters.includes(letters[i])){
console.log("This is valid");
}
else {
console.log("This is not valid "+i);
}
i++;
}
Merci pour l'explication claire et si! Encore une fois je ne sais pas pourquoi je pensais commencer de -1 lol. A été capable de réparer mon code up :)