Описание: Я работаю над некоторыми упражнениями, чтобы познакомиться с 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);
4 ответа
MAX_VALUE
и POSITIVE_INFINITY
константы - это свойства объекта Number
, а не Math
. Вы также можете использовать глобальный Infinity
< константа
Попробуйте это (используйте номер):
var max = Number.MAX_VALUE;
console.log(max);
var min = Number.MIN_VALUE;
console.log(min);
В JavaScript нет MAX_INFINITY
константы. Даже POSITIVE_INFINITY
не выполнит задачу правильно, потому что это больше, чем MAX_VALUE
. Однако вы можете просто использовать Math.min.apply
, как указано в комментариях.
Если вы действительно хотите понять логику числовых констант JavaScript, вы можете использовать NEGATIVE_INFINITY
и увидеть, что они меньше всех чисел JavaScript (включая Number.MIN_SAFE_INTEGER
):
Number.NEGATIVE_INFINITY < Number.MIN_SAFE_INTEGER // true
Просто потому, что это Number.POSITIVE_INFINITY
, а не Math.POSITIVE_INFINITY
. (То же самое для MAX_VALUE
)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.