我面临着一个以前没见过的问题。 我不需要最低值,但我需要具有最低值的变量。
我有5个变量,假设它们是这样设置的(它们显然不是这样):
rat_professionalism_pct = 57.1
rat_responsiveness_pct = 58.6
rat_expertise_pct = 61.0
rat_courtesy_pct = 44.4
rat_teamplayer_pct = 50.9
我的目标是有这样的句子:
你的最高评价是“专业知识”。
我的标准做法是:
let rat_attribute;
let rat_pct;
let rat_attribute_highest = 'professionalism';
let rat_pct_highest = per_rat_professionalism_pct;
for (let b = 1; b <= 5; b++) {
switch (b) {
case 1: rat_attribute = 'professionalism'; rat_pct = per_rat_professionalism_pct; break;
case 2: rat_attribute = 'responsiveness'; rat_pct = per_rat_responsiveness_pct; break;
case 3: rat_attribute = 'expertise'; rat_pct = per_rat_expertise_pct; break;
case 4: rat_attribute = 'courtesy'; rat_pct = per_rat_courtesy_pct; break;
case 5: rat_attribute = 'professionalism'; rat_pct = per_rat_professionalism_pct; break;
}
if (rat_pct > rat_pct_highest) {
rat_attribute_highest = rat_attribute; rat_pct_highest = rat_pct;
}
}
这是一个与语言无关的方法,可以在任何编程语言中工作,因为它只使用条件和循环的基本模式。
但是,我认识到我是Javascript的新手,并且(默认情况下)不会跳转到一些JS原生的最酷的函数,比如数组函数。
有没有更好的方法来做到这一点,例如使用。reduce()?
为什么不把所有变量作为键放在一个对象中,然后找到最大值以及与最大值相关联的键呢
null
const obj = {
professionalism: 57.1,
responsiveness: 58.6,
expertise: 61.0,
courtesy: 44.4,
teamplayer: 50.9
}
const maxValue = Math.max(...Object.values(obj));
for (const k of Object.keys(obj)) {
if (obj[k] == maxValue) {
console.log(`Your highest rated attribute is '${k}'`);
break;
}
}