web-dev-qa-db-fra.com

pourquoi lodash ne peut-il pas trouver la valeur maximale dans un tableau?

J'ai ci-dessous le code et j'ai essayé d'utiliser lodash pour trouver la valeur maximale à partir d'un objet tableau;

var a = [ { type: 'exam', score: 47.67196715489599 },
  { type: 'quiz', score: 41.55743490493954 },
  { type: 'homework', score: 70.4612811769744 },
  { type: 'homework', score: 48.60803337116214 } ];
 var _ = require("lodash")

 var b = _.max(a, function(o){return o.score;})
 console.log(b);

la sortie est 47.67196715489599 qui n'est pas la valeur maximale. Quel est le problème avec mon code?

18
Zhao Yi

_.max() de Lodash n'accepte pas d'itéré (rappel). Utilisez _.maxBy() à la place:

var a = [{"type":"exam","score":47.67196715489599},{"type":"quiz","score":41.55743490493954},{"type":"homework","score":70.4612811769744},{"type":"homework","score":48.60803337116214}];


console.log(_.maxBy(a, function(o) {
  return o.score;
}));

// or using `_.property` iteratee shorthand

console.log(_.maxBy(a, 'score'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
34
Ori Drori

Ou encore plus court:

var a = [{"type":"exam","score":47.67196715489599},{"type":"quiz","score":41.55743490493954},{"type":"homework","score":70.4612811769744},{"type":"homework","score":48.60803337116214}];

const b = _.maxBy(a, 'score');
console.log(b);

Cela utilise le _.property raccourci itératif.

6
Maurits Rijk