var a = 1;
var b = 2;
var c = 3;
var d = Math.max(a, b, c);
return d;
此代码返回 3 。我需要的结果不仅包括计算值,还包含变量名。
所需的输出: c - 3 。
答案 0 :(得分:2)
如果您可以将这些值存储在对象中,则可以在存储密钥名称的同时循环键并比较它们的值。
var values = { a: 1, b: 2, c: 3 }
var maxName;
var max;
for(var key in values) {
if(max === undefined || max < values[key]){
maxName = key;
max = values[key];
}
}
console.log('Max: ' + maxName + ' - ' + values[maxName]);
var values = { a: 1, b: 2, c: 3 }
var maxName;
var max;
for(var key in values) {
if(max === undefined || max < values[key]){
maxName = key;
max = values[key];
}
}
console.log('Max: ' + maxName + ' - ' + values[maxName]);
答案 1 :(得分:2)
Variable
个名称。
这样的解决方案也不具备可扩展性。
schema
中的调整可以解决此问题。
请注意以下示例中Object
,Object.entries()
和Array.prototype.reduce()
的使用。
// Pairs.
const pairs = {
a: 1,
b: 2,
c: 3
}
// Get Max Pair.
const getmaxpair = (pairs) => Object.entries(pairs).reduce((max, pair) => !max && pair || pair[1] > max[1] ? pair : max, false)
// Max Pair.
const [key, value] = getmaxpair(pairs)
// Log.
console.log('max pair:', `${key} ${value}`) // c 3
答案 2 :(得分:1)
您可以使用javascript对象或地图轻松完成此操作
var list = {"a": 1, "b": 2, "c": 3};
var d = Math.max(list.a, list.b, list.c);
// this will return an array: ["a", "b", "c"]
keys = Object.keys(list);
// do a reverse lookup here to find which key your value belongs to
// eg. if list[keys[counter]] == d { your code here }
这是另一种进行反向查找的方法 https://stackoverflow.com/a/9907509/9310329 希望这有帮助
答案 3 :(得分:0)
虽然在现实用例中使用地图(参见其他答案)可以更轻松地实现这一点。 你要求的实际上也是可能的(灵感来自https://stackoverflow.com/a/42791996/7988438)
let a = 1;
let b = 2;
let c = 3;
let d = Math.max(a, b, c);
let varToString = varObj => Object.keys(varObj)[0];
if (a == d) {
console.log(varToString({a}),d)
}
if (b == d) {
console.log(varToString({b}),d)
}
if (c == d) {
console.log(varToString({c}),d)
}
相当丑陋,但完成了工作。
答案 4 :(得分:0)
虽然您想到的魔法在某种程度上可能会在对象键上进行迭代,如其他答案中所示,但通常您只需要一个对象数组,其中键已知,并且值会有所不同:
var persons=[
{name: "John", age: 52},
{name: "Jane", age: 35},
{name: "Peter", age: 86},
{name: "Susan", age: 72}
];
var eldest=persons[0];
persons.forEach(function(person){
if(person.age>eldest.age)eldest=person;
});
console.log(eldest);
&#13;