2014-08-29 44 views
-1

如何找到這樣的函數中的最小或最大數字 {「a」,5,「h」,7,true,6,「h」 ,7}。該解決方案必須適用於具有相同特性的其他類型的功能。 我設置min = arguments [0]但是如果它不是數字呢? 你知道我在閱讀有關職能和我讀到爭論對象,其中包含arguments.i數組試過這樣:如何在javascript中找到此函數中的最小數字

function argsMin() { 
    var i = 0; 
    var min=arguments[0]; 
    for(i=0;i<arguments.length;i++) { 
    if(min>arguments[i]){ 
     min=arguments[i]; 
     } 
    } 
    return min; 
} 

document.write(argsMin(1124,562,-973,955)); 

現在,如果第一個指數是不是一個數字。

+0

你嘗試過什麼等等遠,你卡在哪裏?我假設你遇到了這個問題:[在Javascript中從數組獲得最小值?](http://stackoverflow.com/q/8934877/218196)(因爲這是搜索數組[[javascript]最小數字的第一個結果'](http://stackoverflow.com/search?q=%5Bjavascript%5D+min+number+in+array))...你有麻煩適應你的情況嗎? – 2014-08-29 14:50:15

+0

如果你想測試一個值是否是一個數字,你可以使用'typeof'運算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – 2014-08-29 15:07:44

+0

'if(min 2014-08-29 15:46:43

回答

0

首先對每個元素檢查if (typeof element== "number"),然後選中該找分鐘JavaScript: min & max Array values?

+0

如果問題通過鏈接到其他問題答案回答,請將此問題標記爲重複,而不是回答。 – 2014-08-29 14:58:33

+0

我用這個鏈接來回答問題的一部分,否則你是完全正確的。 – Konst 2014-08-29 15:01:02

0

您可以申請降低陣列功能查找最小值和最大值爲緊隨其後。

min = array.reduce(function(x,y){if (typeof y === 'number' && (y<x)) return y; return x;}, Infinity) 
max = array.reduce(function(x,y){if (typeof y === 'number' && (y>x)) return y; return x;}, -Infinity) 

如果數組中沒有號碼,min將包含Infinitymax將包含-Infinity

0
function minOfArray(array) { 
    return Math.min.apply(this, array.filter(function (a) { return !isNaN(a); })); 
    } 

    function maxOfArray(array) { 
    return Math.max.apply(this, array.filter(function (a) { return !isNaN(a); })); 
    } 
0

它實際上很簡單。通過所有元素的

Math.min(x, y); 

循環,並保持一個變量最低持有一個最低:

剛落,這裏面一個循環。一旦所有元素都進行了比較,您的最低數量將由變量保存。

以確定它是否是一個數字:

isFinite(String(foo).trim() || NaN) 

最後,查找「線性搜索」,如果要對這個過程會造成困惑。

線性搜索:http://en.wikipedia.org/wiki/Linear_search

相關問題