0
votes

Pourquoi ma fonction de réduction () n'est pas incapable de savoir Maxgrade correcte?

J'essaie de trouver le bon grade maximal d'une liste de numéros donnés. Donc, lorsque j'utilise ce lightandlow ("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6") code> La fonction me donne 6 code> comme Maxgrade code> mais il devrait être 542 code>.

Veuillez vérifier le code et expliquez le problème. P>

p>

function highAndLow(numbers) {
  var num = numbers.split(" ");

  var maxGrade = num.reduce((accum, currVal) => {
    if (accum > currVal) return accum;
    return currVal;

  });
  console.log(maxGrade);
  console.log(num);
}

highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")


1 commentaires

Vous comparez des chaînes. Convertissez-les en chiffres avant de réduire: chiffres.split ("") .MAP (numéro)


4 Réponses :


0
votes

Utilisez la fonction max:

p>

function highAndLow(numbers) {
  var num = numbers.split(" ");

  var maxGrade = num.reduce((accum, currVal) => Math.max(accum, currVal));
  console.log(maxGrade);
  console.log(num);
}

highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")


0 commentaires

1
votes

Vous devez convertir en nombre en premier.

var num = numbers.split(" ").map(x => Number(x));


0 commentaires

2
votes

Lorsque vous utilisez Split () code> Pour convertir la chaîne en une matrice, vous avez réellement un tableau de chaînes code>

Vous pouvez utiliser array.map (Numéro) code> pour convertir des chaînes en nombre p>

la valeur de chaîne "6" code> est supérieur à la valeur de chaîne "542" code> p>

p>

function highAndLow(numbers) {
  var num = numbers.split(" ").map(Number);

  var maxGrade = num.reduce((accum, currVal) => {
    if (accum > currVal) return accum;
    return currVal;
  });
  console.log(maxGrade);
  console.log(num);
}

highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")


0 commentaires

2
votes

Vous pouvez diviser la chaîne et propager les valeurs pour obtenir une valeur maximale.

math.max code> convertit les paramètres en chiffres. P>

p>

function highAndLow(numbers) {
    return Math.max(...numbers.split(" "));
}

console.log(highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"));


0 commentaires