2016-07-07 37 views
0

任何人都可以幫助我做到這一點?該功能在下面是空的,我不確定如何繼續。我現在在網頁上顯示分解數字,現在我希望數學在之前顯示。像這樣的東西;我已經創建了一個網頁,可以對一個數字進行階乘。我已經創建了這個功能。現在我需要創建一個函數來顯示我的數學。

用戶輸入:3個 我們的網站輸出: 「1×2×3 = 6」

function factorialize(num) { 
var total = 1; 
if (num > 1) { 
    for (var i = 1; i <= num; i += 1) { 
    total *= i; 
    } 
} 
return total; 
} 

function showMath() { 

}; 


$(document).ready(function() { 
    $("form#new-item").submit(function(event) { 
    event.preventDefault(); 
    var userInput = parseInt($("input#input1").val()); 
    var result = factorialize(userInput); 
    var myWork = showMath(userInput); 
    // var 
    $("#output").text(myWork + " = " + result); 


}); 
}); 
+5

而不是使用一個單獨的功能,在你的'factorialize的循環()'函數,你可以建立一個字符串'數學+ =「X」 + i'。 – nnnnnn

+0

對不起,我只是一個初學者。在循環中我會在哪裏隱藏那行代碼? – bsnub

+0

在'total * = i'之前或之後添加它。並在循環前添加'var math =「1」;並將循環改爲從'var i = 2'開始。函數然後可以返回'math +「=」+ total'。話雖如此,Malk的答案是一個更好的選擇,但我意識到'.reduce()'可能會讓初學者感到困惑。 – nnnnnn

回答

1

你應該建立所有因素的陣列。那麼很容易將reduce()這個數組轉換成一個單一的值或join()它變成一個字符串。

function toFactorialArray(num){ 
    var n = num, 
     arr = [n]; 

    while (--n) arr.push(n); 
    return arr; 
} 

function getResult(arr){ 
    return arr.reduce( 
     function(memo, current) { 
      return memo * current 
     }, 1 
    ); 
} 

function getWork(arr){ 
    return arr.reverse().join(' * '); 
} 





$(document).ready(function() { 
    $("form#new-item").submit(function(event) { 
    event.preventDefault(); 
    var userInput = parseInt($("input#input1").val()); 
    var factors = toFactorialArray(userInput); 
    var result = getResult(factors); 
    var myWork = getWork(factors); 

    $("#output").text(myWork + " = " + result); 


}); 
}); 
+0

非常感謝您的幫助。 – bsnub

相關問題