从Math.min()中查找哪个变量最小

时间:2016-02-21 09:27:43

标签: javascript html

我有5个变量

var a=10,b=23,c=45,d=90,e=78; var min=Math.min(a,b,c,d,e);

我想在不使用for循环或if语句的情况下找到哪个变量最小?

2 个答案:

答案 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;
&#13;
&#13;

否则版本

&#13;
&#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;
&#13;
&#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"