首页 > 解决方案 > 有没有办法在对象中应用条件?

问题描述

我需要提供一个解决方案来显示班级中学生的最高分。

function highestScore (students) {

// 这里的代码 }

    // TEST CASE
     console.log(highestScore([
      {
     name: 'Daisy',
     score: 90,
     class: 'foxes'
   },
   {
      name: 'Alexander',
      score: 85,
      class: 'wolves'
   },
   {
    name: 'Sergio',
    score: 74,
    class: 'foxes'
   },
   {
     name: 'Anabelle',
     score: 78,
     class: 'wolves'
   }
 ]));

 From the parameter, the function would return the name of each class and 
 display the highest student's name and score of that student.

  function highestScore (students) {
    var classes = {};
    var scores = [];
   for(i=0; i<students.length; i++){
     var inputClass = students[i].class;
     var inputScore = students[i].score;
     var inputName = students[i].name;
     var classScore = [];
     var isExist = false;

     var object = Object.values(class);
     return classScore;
   }


 // TEST CASE
 console.log(highestScore([
   {
     name: 'Daisy',
     score: 90,
    class: 'foxes'
   },
   {
     name: 'Alexander',
     score: 85,
     class: 'wolves'
   },
   {
     name: 'Sergio',
     score: 74,
     class: 'foxes'
   },
   {
     name: 'Anabelle',
     score: 78,
     class: 'wolves'
   }
 ]));

 The result would show something like this.
 // {
 //   foxes: { name: 'Daisy', score: 90 },
 //   wolves: { name: 'Alexander', score: 85 }
 // }

标签: javascriptobject

解决方案


我目前的解决方案如下。

    function highestScore (students) {
         var object = {};
     var result = [];
     for (var i=0; i<students.length; i++){
    var nameInput = students[i].name
     var scoreInput = students[i].score
     var classInput = students[i].class

if(object[classInput] === undefined){
  object[classInput] = {
    name: nameInput,
    score: scoreInput,
  }
}
for(var j=0; j<students.length; j++){
  if(students[j].class === object[students[i].class] && students[j].score > object[students[i].class].score){
    object[classInput] = {
    name: students[j].name,
    score: students[j].score,
    }      
  }
}

}

    return object;

   }

但是,如果后面的学生得分高于初始值,我无法插入新值。

// TEST CASE console.log(highestScore([ { name: 'Dimitri', score: 90, class: 'foxes' }, { name: 'Alexei', score: 85, class: 'wolves' }, { name: 'Sergei', score: 94, class: 'foxes' }, { name: 'Anastasia', score: 78, class: 'wolves' } ]));


推荐阅读