JavaScript: Array - возврат наименьшего и наибольшего значения из массива

292
26 ноября 2016, 18:00

Есть код, который принимает массив и должен вернуть отсортированный массив из двух элементов, первый - это наименьшее, второй наибольшее значение в передаваемом массиве. Логически сделал все верно но ни как не заставлю код работать. Помогите разобраться.

function minMax(arr){ 
  function determineOrder(num){ 
    return (num[0] > num[1]) ? array.push(num[0], num[1]) : array.push(num[1], num[0]) ; 
  } 
  return arr.map(determineOrder); 
} 
 
 
 
minMaxminMax([1,2,3,4,5])  ;

А я ожидал такой результат:

minMax([1,2,3,4,5])   == [1,5]
minMax([2334454,5])   == [5, 2334454]
minMax([1])           == [1, 1]
Answer 1

Без всяких заумностей. Внутри функции сначала определяем две переменные как минимум и максимум равные начальному элементу массива. Потом сравниваем их со всем элементами массива по порядку.

function minMax(arr){ 
  var min = arr[0], max = arr[0]; 
  arr.forEach(function(val) { 
    min = Math.min(min, val); 
    max = Math.max(max, val); 
  }); 
  return [min, max]; 
} 
 
console.log(minMax([1,2,3,4,5])); 
console.log(minMax([2334454,5])); 
console.log(minMax([1]));

Answer 2

Три представленные реализации возврщают наименьшее и наибольшее значения из массива

es5:

function minMax(arr){ 
  return [Math.min.apply(Math, arr), Math.max.apply(Math, arr)]; 
} 
 
console.log(minMax([1,2,3,4,5])); 
console.log(minMax([2334454,5])); 
console.log(minMax([1]));

es6:

    function minMax(arr){ 
      return [Math.min(...arr), Math.max(...arr)]; 
    } 
 
    console.log(minMax([1,2,3,4,5])); 
    console.log(minMax([2334454,5])); 
    console.log(minMax([1]));

old way:

function minMax(arr) { 
    var a = arr.sort(function(a,b) {return a-b}); 
    return [a[0], a[a.length-1]]; 
  } 
 
console.log(minMax([1,2,3,4,5])); 
console.log(minMax([2334454,5])); 
console.log(minMax([1]));

READ ALSO
Как работают замыкания в JavaScript

Как работают замыкания в JavaScript

Как сказал Альберт Эйнштейн:

276
Проблема с setInterval в JS

Проблема с setInterval в JS

Добрый вечер! Возникла проблема с решением задачиЕсть 9 блоков (массив mult от 0 до 8)

194
Догрузка JavaScrtipt и событие загрузки

Догрузка JavaScrtipt и событие загрузки

По определенном событию мне необходимо подгрузить дополнительный файл javascript и, после его загрузки и выполнения, выполнить некое действиеПо...

210
Не работает onclick на блочных элементах

Не работает onclick на блочных элементах

И так, не работает onСlickВыскакивает вот такое сообщение:

186