Alors j'essaie de comprendre pour des boucles un peu plus mais je me demandais s'il y a un moyen de retourner chaque itération de la boucle plutôt que du résultat final?
Je sais que je pouvais juste énumérer les articles séparément mais je "D Aimez comprendre une manière où je peux le faire plus efficacement et au cas où il y avait un grand nombre d'objets dans un tableau. p>
3 Réponses :
Vous ne pouvez pas revenir d'une fonction normale qui sorta immédiatement de la boucle lorsque vous émettez le Ceci est selon votre condition que vous ne voulez pas Les articles à répertorier: P> Je sais que je pourrais juste énumérer les articles séparément, mais j'aimerais comprendre
sur une façon où je peux le faire plus efficacement p>
blockQquote> donc en cas de fonction génératrice, la valeur de rendement code> renvoie réellement une valeur code> et met en pause l'exécution de la fonction d'exécution et ne sort pas du boucle: p> p> retour code>; Sauf si vous utilisez une fonction de générateur, indiquée par le mot-clé code> de fonction code> suivi d'un astérisque IE fonction * code> syntaxe.
function* gen(){ //Note the asterisk
yield 1; //pauses after each next() call
yield 2;
yield 3;
return "completed";
}
const iterable = gen();// returns a iterable
const one = iterable.next();// get the first value {value: value, done: boolean}
console.log(one.value);
const two = iterable.next(); //loop resumed till yield 3
console.log(two.value);
const three = iterable.next();
console.log(three.value); //all values yielded
const final = iterable.next();
console.log(final.value); // value of the return statement
console.log(final.done); //done is true
Bien que cela puisse fonctionner, je ne suis pas sûr que cela aide l'OP. L'OP ne comprend pas les boucles (par son propre admission), alors je ne suis pas sûr d'introduire un concept comme des fonctions de générateur et un rendement code>, aidera.
@Cerbrus je vais ajouter quelques explications sous peu!
Ceci est plutôt utile et éclairant en termes de compréhension de certains aspects de la langue. Merci pour l'aide malade de vous assurer de déconstruire ce que j'ai appris à comprendre certains aspects un peu mieux.
Pour renvoyer chaque valeur, vous pouvez utiliser un supplément p> Résultats CODE> CODE> STROND> Tableau que vous remplissez à l'aide de Push () Code> Strong> Comme vous allez: function average(array) {
return array.map(item => item.number / array.length);
}
const array = [
{ user: 'a', number: 20 },
{ user: 'b', number: 21 },
{ user: 'c', number: 22 }
];
console.log(average(array));
Je soupçonne quelque chose de simple comme un mappe code> est ce que l'OP recherche, bien que vraiment, cette question devrait être fermée comme "peu claire" ...
La voie la plus simple, aussi loin que je le compri, utiliserait JavaScript, si vous ne voulez pas utiliser code>: Réduire CODE> et un peu plus facile à lire: P> let sum = 0;
array.forEach(obj => { sum += obj.number });
const average = sum / array.length;
Votre code doit renvoyer la première valeur, pas le dernier
Qu'essayez-vous de faire? Voulez-vous une liste de chiffres retournés? Que vous attendez-vous si vous retour i> b> une valeur dans une boucle? Que
retour code> est immédiatement hors de la boucle.pour CODE> La boucle n'a pas de valeur de retour, elle exécute simplement son corps et, après cela, l'exécution est poursuivie de l'énoncé suivant après la boucle.retour code> retourne de la fonction b> et votre boucle ne sera jamais itérale à travers tous les membres de la matrice.