我需要统计会议中所有人的分数。如果他们的分数小于等于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);
}
胡说叔叔
TA贡献1804条经验 获得超8个赞
除了两次推送的值外,还使用一个太多的值来增加数组。您最好通过将键值减去总和来直接添加值,然后再从中获取平均值。
var keys = Object.keys(meet);
return keys.reduce((sum, key) => s + (key === boss ? 2 : 1) * meet[key], 0) / keys.length;
添加回答
举报
0/150
提交
取消