0
votes

La somme / moyenne de tous les éléments dans un tableau à l'aide de la boucle

J'ai lu une autre question concernant pour la boucle et j'ai proposé ce code calculant la moyenne et le Sommet de tous les éléments de la matrice, il semble y avoir quelque chose d'incorrect, aider serait apprécié.

P>

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Loops</h2>

<p id="demo"></p>

</body>
</html>


6 commentaires

Vous utilisez elmt [i] tout en calculant somme . De plus, vous utilisez le même nom somme comme variable de somme totale et dans pour itérateur de boucle. elmt [i] est nan .


Pourquoi elmt défini sans var (ou let / const )? Et c'est un moyen vraiment compliqué d'ajouter les éléments à elmt -> var elmt = [0, 1, 2, 3, 4, 7, 8, 9, 10, 11]; / code> ferait la même chose.


@ user3132457 elmt [i] n'est pas nan , c'est non défini car i est indéfini. Seulement parseint (elmt [i], 10) sera nan


@Andreas Voulez-vous savoir pourquoi j'ai voté, ma question était claire, j'ai montré du code ...


Pas mon DV, mais je devinerais que c'est la recherche manquante sur la façon dont les boucles fonctionnent et peut-être qu'il n'y a pas de conseils de débogage (pourquoi i ou elmt [i] non défini ?).


@Andreas mon erreur là-bas.


3 Réponses :


2
votes

Vous utilisez deux types de boucles. Vous pouvez choisir un pour boucle , ou un pour ... de boucle: xxx pré>

mais, une manière plus propre de faire cela consiste à utiliser Réduire code>: p>

var sum = elms.reduce((a, c) => a + c, 0);
var avg = sum / elms.length;


4 commentaires

En deuxième boucle, devrait être somme + = e;


@wvteijlingen a juste essayé la ... de l'exemple de boucle que vous avez écrit mais ne fonctionne pas


Whoops, j'ai foiré le pour ... de boucle après copie et colle. Cela devrait fonctionner maintenant.


@wvteijlingen merci pour la réponse claire, tu veux savoir pourquoi je suis passé voté, ma question était claire, j'ai montré du code ...



0
votes

Essayez le texte suivant

p>

var elmt = [0,1,2,3,4,7,8,9,10,11];

//Using reduce()

function totalReduce(arr) {
  if(!Array.isArray(arr)) return;
  return arr.reduce((a, v)=>a + v);
}

//Using for loop

function totalForLoop(arr) {
  if(!Array.isArray(arr)) return;
  let totalNumber = 0;
  for (let i=0,l=arr.length; i<l; i++) {
     totalNumber+=arr[i];
  }
  return totalNumber;
}
// Using while loop

function totalWhile(arr) {
  if(!Array.isArray(arr)) return;
  let totalNumber = 0, i=-1;
  while (++i < arr.length) {
     totalNumber+=arr[i];
  }
  return totalNumber;
}
// Using array forEach

function totalForEach(arr) {
  if(!Array.isArray(arr)) return;
  let sum=0;
  arr.forEach(each => {
    sum+=each;
  });
  return sum;
};


var sum = totalReduce(elmt);

console.log( "Sum Using reduce: " + sum + " Average: " + sum/elmt.length );

sum = totalForLoop(elmt);
console.log( "Sum Using totalForLoop: " + sum + " Average: " + sum/elmt.length );

sum = totalWhile(elmt);
console.log( "Sum Using totalWhile: " + sum + " Average: " + sum/elmt.length );

sum = totalForEach(elmt);
console.log( "Sum Using totalForEach: " + sum + " Average: " + sum/elmt.length );


0 commentaires

0
votes
<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Loops</h2>

<p id="demo"></p>

<script>
var i;
elmt=[]
elmt[0] = 0;
elmt[1] = 1;
elmt[2] = 2;
elmt[3] = 3;
elmt[4] = 4;
elmt[5] = 7;
elmt[6] = 8;
elmt[7] = 9;
elmt[8] = 10;
elmt[9] = 11;

var sum = 0;
for (let x of elmt) {
    sum += x;
}
var avg = sum/elmt.length;

document.write( "The sum of all the elements is: " + sum + " The average is: " + avg );
</script>

</body>
</html>
The assumption is that all the elements are numbers, other way you need a type checking to ignore NaN entries.

0 commentaires