Описание: Я работаю над некоторыми упражнениями, чтобы познакомиться с Javascript. Один из вопросов просит меня найти наименьшее число в данном объекте ниже.

var myObj = { key: [5, 8, 1, 4] };

Я установил начальное значение smallest на POSITIVE_INFINITY и MAX_VALUE. После того, как я запустил свою программу (см. Ниже), undefined был возвращен. Однако, когда я установил smallest в 99999, программа будет выполнена правильно.

Мой вопрос: что вызывает возвращение неопределенного, когда я устанавливаю для своей переменной наименьшее значение POSITIVE_INFINITY и MAX_VALUE? Спасибо заранее за вашу помощь.

var myObj = { key: [5, 8, 1, 4] };

function getSmallest(obj, key) {

  //var smallest = Math.POSITIVE_INFINITY;  //---> undefined is returned
  //var smallest = Math.MAX_VALUE;  //--->undefined is returned
  var smallest = 99999;  //---> Correct result is returned

  if (!obj.hasOwnProperty(key) || !Array.isArray(obj[key]) || obj[key].length === 0) {
    return undefined;
  }

  for (var i in obj[key]) {
    if (obj[key][i] < smallest) {
      smallest = obj[key][i];
    }
  }

  return smallest;
}

var output = getSmallest(myObj, 'key');
console.log(output); 
0
LED Fantom 30 Авг 2017 в 01:50

4 ответа

Лучший ответ

MAX_VALUE и POSITIVE_INFINITY константы - это свойства объекта Number, а не Math. Вы также можете использовать глобальный Infinity < константа

1
Bergi 29 Авг 2017 в 22:52

Попробуйте это (используйте номер):

var max = Number.MAX_VALUE;
console.log(max);

var min = Number.MIN_VALUE;
console.log(min);
0
Pritam Banerjee 29 Авг 2017 в 22:57

Просто потому, что это Number.POSITIVE_INFINITY, а не Math.POSITIVE_INFINITY. (То же самое для MAX_VALUE)

0
DoNotDownvote_JustUpvote 29 Авг 2017 в 22:56
45949392