2016-02-21 1 views
-2

У меня есть 5 переменныхFinding какая переменная минимальна из Math.min()

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

я хочу найти, какая переменная является минимальным без использования для цикла или если заявления ??

+1

Что вы подразумеваете под «какой переменной»? Имя переменной? И зачем вам это нужно? – hindmost

+0

Использование 'Math.min()', так как вы вернете минимальное значение 5 переменных. Вы хотите найти имя переменной *? – BenM

+0

да .. прямо! – Aranganathan

ответ

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" 
+0

сортирует итерации более, чем уменьшает. –

+0

@NinaScholz уверен, однако OP был довольно специфичен в отношении «без использования для цикла или операторов» - я думаю, что чем проще, тем лучше в этом случае. Мой ответ не будет узким местом. – brod

+0

его рабочий человек !! Awsome! – Aranganathan

2

Он не работает без какого-либо цикла (итераторы массива, или для 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>');

Нет, если версия

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>');

+1

В этом вопросе четко указаны утверждения if, а не циклы. На самом деле это не ответ. – Selfish

+0

Тернарный оператор в значительной степени является выражением 'if'. – brod

+0

@brod, больше нет троицы. –

Смежные вопросы