所以,我是一个新手JS和我试图找出如何解决我的问题。 我试图循环对象和返回的最低数量。
在我的var shortest = ;
如果我硬编码了一些说var shortest = 455;
那么问题将返回正确的号码3,虽然林不知道要放什么东西存在,使其默认为空白。 我曾尝试object[0]
object[key]
和''
,没有这些工作正常
var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};
var myFunc = function (object) {
var shortest = ;
for (var key in object) {
if (object[key] < shortest) {
shortest = object[key];
}
};
return shortest;
};
以最短的Number.MAX_VALUE设置的初始值是所有你需要
var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};
var myFunc = function (object) {
var shortest = Number.MAX_VALUE;
for (var key in object) {
if (object[key] < shortest) {
shortest = object[key];
}
};
return shortest;
};
Number.MAX_VALUE最大正表示数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
尝试这个:
var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};
var myFunc = function (object) {
var shortest = object.first;
for (var key in object) {
if (object[key] < shortest) {
shortest = object[key];
}
};
return shortest;
};
失败的原因是在这里:
var myFunc = function (object) {
var shortest = ;
for (var key in object) {
if (object[key] < shortest) {
由于最短的值是未定义的,该<
操作导致它被转换为NaN
用于测试,并根据用于规则摘要关系比较算法 ,comaring什么NaN
返回未定义,其等同于false
这里。
解决方法是初始化最短为某个值,例如作为秋德清建议Number.MAX_VALUE,或者您也可以使用这样的:
function getShortest(object) {
var shortest, value;
for (var key in object) {
value = object[key];
if (typeof value == 'number' && !isNaN(value)) {
if (typeof shortest != 'number') {
shortest = value;
} else {
if (value < shortest) {
shortest = value;
}
}
}
}
return shortest;
}
以上将确保你只能比较数字和最短的仅是一个数字或不确定 。 应该有可能会是一个hasOwnProperty测试过,以避免继承属性。
看看这有助于:
var lowest = function(ns) {
return Math.min.apply(0, ns);
};
var values = function(obj) {
var result = [];
for (var i in obj) {
result.push(obj[i]);
}
return result;
};
var result = lowest(values(myObj));
console.log(result); //=> 3