为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2021-05-21 18:15:27
我需要统计会议中所有人的分数。如果他们的分数小于等于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 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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


if (i === boss) {

    values.push(score * 2);

}

else {

    values.push(score);

}


查看完整回答
反对 回复 2021-05-27
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

除了两次推送的值外,还使用一个太多的值来增加数组。您最好通过将键值减去总和来直接添加值,然后再从中获取平均值。


var keys = Object.keys(meet);


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



查看完整回答
反对 回复 2021-05-27
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信