嗨,這裏是一些使用數組減少方法關閉w3學校的代碼。我正在嘗試學習如何使用這個,但是爲什麼這段代碼甚至可以工作,我有點困惑。爲什麼numbers.reduce(getSum)
doesent參數在getSum函數中。我們的代碼如何甚至知道數組內部有多少事物,以及如果我們甚至不給getSum函數提供參數如何總結它們。在w3schools上,它說array.reduce(function(total,currentValue,currentIndex,arr),initialValue)
,並且還說需要total和currentValue。但我們在這裏甚至沒有他們嗎?我們只是有我們的功能!請幫助。數組減少方法
<!DOCTYPE html>
<html>
<body>
<p>Click the button to get the sum of the numbers in the array.</p>
<button onclick="myFunction()">Try it</button>
<p>Sum of numbers in array: <span id="demo"></span></p>
<script>
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
return total + num;
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum);
}
</script>
</body>
</html>
繼承人另一個例子..不知道有什麼區別
var numbers = [15.5, 2.3, 1.1, 4.7];
function getSum(total, num) {
return total + Math.round(num);
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum,0);
}
不同的是在初始值: 「未定義」與「0」。首次使用'undefined'第一個數組元素。另外,第二個將所有數字舍入爲整數。 –
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce可能會更好一些,但基本上它可以寫成'numbers.reduce(function(total, num){return total + num;});'如果getSum被替換爲匿名函數。其餘的可以通過鏈接更好地解釋。 –