【发布时间】:2019-03-12 00:56:51
【问题描述】:
var foo = 0;
var bar = 0;
var arr1 = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
function getSum(arr, sum) {
sum = arr.reduce(function(accum, val) {
return accum += val;
}, 0)
}
getSum(arr1, foo); //expect foo to equal 15, but it stays at 0
getSum(arr2, bar); //expect bar to equal 40, but it stays at 0
我想多次使用这个函数,因此需要参数。我知道让sum 参数等于Array.reduce() 不是你应该做的,但我真的不确定语法应该是什么。
基本上,我希望arr1 的值始终与foo 相加,arr2 始终与bar 相加,而不必重复我的代码。
【问题讨论】:
-
你没有从
getSum返回任何东西,它应该是undefined,而不是0。你的代码中也没有data。将其修复为arr,它按预期工作。 -
如果你想给
reduce提供一个初始参数,把它作为第二个参数传递(而不是使用0) -
您不能将变量传递给这样的函数并期望将值分配回该变量。您需要从函数返回值并将返回的变量分配给函数:
foo = getSum(arr) -
sumarg 按值传递,而不是通过引用传递。这是因为sum是原始类型(Number)。
标签: javascript arrays reduce