猿问

JavaScript-对象中键值的总和,一个值加倍

我需要统计会议中所有人的分数。如果他们的分数小于等于5,则返回“立即离开!” 否则,返回“尼斯工作冠军!”


meet 作为对象传递:


{

    tim: 0,

    jim: 2,

    randy: 0,

    sandy: 7,

    andy: 0,

    katie: 5,

    laura: 1,

    saajid: 2,

    alex: 3,

    john: 2,

    mr: 0

  }

如果的人meet是boss,他们的分数将增加一倍。(我认为这是我现在遇到的问题-他们的分数没有加倍)。


幸福等级是房间的总得分/人数。


这是我尝试过的方法,它通过了CodeWars上的76/103测试。但是我不知道我在做什么错。


function outed(meet, boss) {


let values = [];


  for (let i in meet) {


    let score = meet[i];


    if (i === boss) {


        values.push(score * 2);


    }


    values.push(score);


  }


  let sumOfValues = values.reduce((previousValue, currentValue) => previousValue + currentValue);

  let happinessRating = (sumOfValues / values.length);


  if (happinessRating <= 5) {

      return "Get Out Now!";

  }

  return "Nice Work Champ!";

}


慕仙森
浏览 133回答 2
2回答

繁华开满天机

您要两次将boss的值添加到数组中(一次加倍,一次为面值)。您只需要在else此处添加:if (i === boss) {&nbsp; &nbsp; values.push(score * 2);}else {&nbsp; &nbsp; values.push(score);}

胡说叔叔

除了两次推送的值外,还使用一个太多的值来增加数组。您最好通过将键值减去总和来直接添加值,然后再从中获取平均值。var keys = Object.keys(meet);return keys.reduce((sum, key) => s + (key === boss ? 2 : 1) * meet[key], 0) / keys.length;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答