JS调用Math.max取最大值时如何获取最大值对应变量名
实现方案
直接把变量传入Math.max时,函数只会接收变量存储的原始数值,不会保留值和原变量的绑定关系,因此无法直接溯源最大值对应的变量。可以通过键值对映射的方式实现需求,同时兼容多个变量同时持有最大值的场景:
let a = 1 let b = 2 let c = 3 // 建立变量名到变量值的映射 const varMap = { a, b, c } // 计算最大值 const maxVal = Math.max(...Object.values(varMap)) // 筛选出所有值等于最大值的变量名 const maxVarNames = Object.entries(varMap) .filter(([_, val]) => val === maxVal) .map(([key]) => key) // 格式化输出 console.log(`最大值为${maxVal},存在于变量${maxVarNames.join('、')}中`)
运行上述代码在当前示例下会输出最大值为3,存在于变量c中,如果存在多个变量同为最大值的情况(比如a=3、c=3),会自动输出最大值为3,存在于变量a、c中,不会漏判。
如果变量数量固定且不需要扩展性,也可以直接用条件判断实现,逻辑更直白:
let a = 1 let b = 2 let c = 3 const maxVal = Math.max(a, b, c) const maxVarNames = [] if (a === maxVal) maxVarNames.push('a') if (b === maxVal) maxVarNames.push('b') if (c === maxVal) maxVarNames.push('c') console.log(`最大值为${maxVal},存在于变量${maxVarNames.join('、')}中`)
内容的提问来源于stack exchange,提问作者masch1na
相关产品推荐
相关产品推荐

