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

时间:2019-05-11 19:33:52

标签: javascript arrays object key-value

Link to CodeWars problem

我需要统计会议中所有人的分数。如果他们的分数小于等于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!";
}

帮助表示感谢!

2 个答案:

答案 0 :(得分:2)

在双推值旁边,您将数组增加了一个太多的值。您最好通过直接将键值减去总和值来直接添加值,然后再从中获取平均值。

var keys = Object.keys(meet);

return keys.reduce((sum, key) => s + (key === boss ? 2 : 1) * meet[key], 0) / keys.length;

答案 1 :(得分:2)

您要两次将老板的值加到数组中(一次加倍,一次为面值)。您只需要在此处添加Streams

else