2014-09-26 22 views
2

我需要創建一個返回數組中最小數字的函數,我似乎無法弄清楚這個問題,因爲這裏的其他問題根本沒有幫助,因爲他們給出了我以前從未見過的代碼的答案,所以我有這個,但它總是隻返回「0」而不是80,那麼你能用我的代碼來幫助我嗎?返回數組中的最小數字,而不使用數學運算

var value = [100, 90, 100, 80]; 
 

 
function lowestGrade(a) { 
 
    for (var i = 0; i < a.length; i++) { 
 
    if (a[i] < a.length); 
 
    value = i; { 
 
     return (value); 
 
    } 
 
    } 
 
} 
 

 
document.write(lowestGrade(value));

+1

什麼是在'if(...);'結尾處做的分號符號? – Soren 2014-09-26 01:46:58

+0

爲什麼你從未見過糟糕的代碼?有一個內置的方法來做到這一點... – elclanrs 2014-09-26 01:48:08

+0

value.reduce(function(a,b){return a 2014-09-26 01:48:16

回答

1

如已經提到的,有建於的方式來處理這個問題。但是,我認爲這是某種家庭作業問題。

var array = [90, 1, 77, -5, 101]; 
 

 
function lowest(arr) { 
 
    //Assume first is lowest 
 
    var low = arr[0]; 
 

 
    for (var i = 0; i < arr.length; i++) { 
 
    //If this isn't lower, swap 
 
    if (low > arr[i]) { 
 
     low = arr[i]; 
 
    } 
 
    } 
 

 
    //Will always contain lowest number 
 
    return low; 
 
} 
 

 
document.write(lowest(array));

+0

請使用'document.write()'而不是'console.log()'。否則,它只會將結果輸出到開發者控制檯中。 – Tarik 2014-09-26 01:52:51

+0

@Tarik - 修正。這聽起來像是功能請求。我希望他們能夠爲了片段的目的而重寫和攔截控制檯日誌記錄。噢... – Josh 2014-09-26 01:54:33

+0

我同意。這也是我的第一印象和期望,但並未如我所料。 – Tarik 2014-09-26 01:56:33

1

的問題是在這裏;

function lowestGrade(a) { 
    for (var i = 0; i < a.length; i++) { 
    if (a[i] < a.length); // < -- this is an if statement which has no effect 
    value = i; // <-- this just set the value to the loop index i 
    { 
     return (value); // << -- this returns at the first loop where i is zeo 
    } 
    } 
} 

取而代之,

var value = [100, 90, 100, 80]; 
 
function lowestGrade(a) { 
 
    var lowest = a[0]; 
 
    for (var i = 0; i < a.length; i++) { 
 
    if (a[i] < lowest) 
 
     lowest = a[i]; 
 
    } 
 
    return lowest; 
 
} 
 

 
document.write(lowestGrade(value));

0

試試這個:

var value = [100, 90, 100, 80]; 
lowestGrade(value); 

function lowestGrade (value) 
{ 
    var lowest; 
    for(var i = 0, cnt = value.length; i<cnt; i++){ 
     if(typeof lowest === 'undefined') { 
      lowest = value[i] 
     } else { 
      if(value[i] < lowest){ 
       lowest = value[i]; 
      } 
     } 
    } 

    console.log(lowest); 
} 

小提琴here

0

既然你是專門要求在Javascript中不使用數學對象,有一個答案我已經在這裏找到在Stackoverflow中,以您想要的方式解決它:

function mymax(a) 
{ 
    var m = -Infinity, i = 0, n = a.length; 

    for (; i != n; ++i) { 
     if (a[i] > m) { 
      m = a[i]; 
     } 
    } 

    return m; 
} 

我並不擁有這個答案,所以請檢查這個鏈接,查看原單筆者的回答:https://stackoverflow.com/a/13794386/44852

1
var value = [100, 90, 100, 80]; 

function lowestGrade(a) { 
var lowestNum = a[0]; // Set it to first element 
    for (var i = 1; i < a.length; i++) { //loop through array, starting at first element if length is greater than 1 
    if (a[i] < lowestNum) 
     lowestNum = a[i]; //if the array value is lower than your variable, set your variable to it 
    } 
    return lowestNum; 
} 

document.write(lowestGrade(value)); 
0

如果你不學習如何進行排序,您可以使用本機reduce功能。

var value = [100, 90, 100, 80]; 
var min = value.reduce(function (pv,cv) { 
    return pv > cv?cv:pv 
}); 
document.write(min); 
+0

@RobG更新了我的答案。 – Mritunjay 2014-09-26 01:58:36