获取年龄=无穷大,同时试图获得最小和最大年龄
问题描述:
我正在实施一个项目,在该项目中我必须找到笼中存在的小鼠的minimum
和k年龄。获取年龄=无穷大,同时试图获得最小和最大年龄
我使用的代码是:
var earTags = "";
var miceAge = "";
var genoTypes = "";
for (var curr_mice_cnt = 0, mice_len = data.mice_info.length; curr_mice_cnt < mice_len; curr_mice_cnt++)
{
alert("Inside for loop");
var m_info = data.mice_info[curr_mice_cnt];
console.log("Mice Len="+data.mice_info.length);
earTags = earTags + m_info.ear_tag + ", " ;
miceAge = miceAge + m_info.age + ", ";
genoTypes = genoTypes + getGenotypeName(m_info.genotype_id) + ", ";
var lowest = Number.POSITIVE_INFINITY;
var highest = Number.NEGATIVE_INFINITY;
var tmp;
for (var i=miceAge.length-1; i>=0; i--) {
tmp = miceAge[i].Cost;
if (tmp < lowest) lowest = tmp;
if (tmp > highest) highest = tmp;
}
console.log(highest, lowest);
}
现在我想显示miceage
这是字符串,我想找到最小和字符串的最大价值,我得到的是错误Miceage=Infinity
。
任何人都可以请帮我实现这一点,或者你可以建议任何其他代码来实现这一点。
答
您发布的代码有几个问题。
- 首先,您根本不需要inner for循环,因为您正在跟踪data.mice_info数组上的最小/最大值。
- 其次,你在迭代内部循环中的一个miceAge,它是一个字符串,所以miceAge [i] .Cost将会出现未定义,这将比大于/小于比较都会失败。
我建议像下面这样:
var lowest = Number.POSITIVE_INFINITY;
var highest = Number.NEGATIVE_INFINITY;
for (var curr_mice_cnt = 0, mice_len = data.mice_info.length; curr_mice_cnt < mice_len; curr_mice_cnt++) {
var tmp = data.mice_info[curr_mice_cnt];
if (tmp.age < lowest) lowest = tmp.age;
if (tmp.age > highest) highest = tmp.age;
}
console.log(lowest, highest);
我敢肯定你使用了循环内的错误变量。你把'miceAge'当作一个对象数组,但它是一个字符串。 – JJJ 2013-03-20 06:30:34
@Juhana,可以请你建议如何实现Miceage作为一个字符串(获取最大值和最小值) – Catmandu 2013-03-20 06:35:37
要么你不明白我的意见,要么我不了解你的... – JJJ 2013-03-20 06:38:26