2013-03-20 107 views
1

我正在實施一個項目,在該項目中我必須找到籠中存在的小鼠的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

任何人都可以請幫我實現這一點,或者你可以建議任何其他代碼來實現這一點。

+3

我敢肯定你使用了循環內的錯誤變量。你把'miceAge'當作一個對象數組,但它是一個字符串。 – JJJ 2013-03-20 06:30:34

+0

@Juhana,可以請你建議如何實現Miceage作爲一個字符串(獲取最大值和最小值) – Catmandu 2013-03-20 06:35:37

+0

要麼你不明白我的意見,要麼我不瞭解你的... – JJJ 2013-03-20 06:38:26

回答

3

您發佈的代碼有幾個問題。

  • 首先,您根本不需要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); 
+0

我已更新問題可以請您檢查 – Catmandu 2013-03-20 06:56:14

+0

我不認爲您瞭解您的代碼存在問題。您仍然追加到一個字符串。嘗試這樣做:var foo =「1,2,3」;的console.log(FOO [2]);你期望看到什麼?究竟發生了什麼? – 2013-03-20 07:11:02

+0

..我已經存儲鼠標年齡在string-miceAge.I要顯示該字符串的最大和最小值 – Catmandu 2013-03-20 07:21:22