我有5个变量
var a=10,b=23,c=45,d=90,e=78;
var min=Math.min(a,b,c,d,e);
我想在不使用for循环或if语句的情况下找到哪个变量最小?
答案 0 :(得分:2)
没有任何循环(数组迭代器,或for,while)和if语句,它不起作用。
这是一个Array#reduce()
的解决方案和一个参考对象。:
var a = 10, b = 23, c = 45, d = 90, e = 78,
object = { a: a, b: b, c: c, d: d, e: e },
result = function (o) {
var keys = Object.keys(o);
return keys.reduce(function (r, k) {
if (o[k] < o[r[0]]) {
return [k];
}
if (o[k] === o[r[0]]) {
r.push(k);
}
return r;
}, [keys.shift()]);
}(object);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
否则版本
var a = 10, b = 23, c = 45, d = 90, e = 78,
object = { a: a, b: b, c: c, d: d, e: e },
result = function (o) {
var keys = Object.keys(o);
return keys.reduce(function (r, k) {
o[k] === o[r[0]] && r.push(k);
return o[k] < o[r[0]] && [k] || r;
}, [keys.shift()]);
}(object);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
答案 1 :(得分:1)
当然,将所有变量放在一个对象中,对它们进行排序,然后得到第一个项目。
var values = { a:10, b:23, c:45, d:90, e:2 }
var smallest = Object.keys(values).sort(function(a,b){return values[a]-values[b]})[0]
console.log(smallest) // "e"