Javascript 向函数内部的变量添加精简数组?(js)
所以我有一个赋值,我只能向某些行添加代码,但我需要得到数组的和,然后返回它。我使用了reduce,但我不知道如何在函数内部将其添加到变量total中,并且我不允许更改total的值Javascript 向函数内部的变量添加精简数组?(js),javascript,arrays,function,Javascript,Arrays,Function,所以我有一个赋值,我只能向某些行添加代码,但我需要得到数组的和,然后返回它。我使用了reduce,但我不知道如何在函数内部将其添加到变量total中,并且我不允许更改total的值 var shoppingCart = [20, 15]; function getTotalCost(prices){ let total = 0; // code below shoppingCart.reduce((total, amount) => total + amount); //
var shoppingCart = [20, 15];
function getTotalCost(prices){
let total = 0;
// code below
shoppingCart.reduce((total, amount) => total + amount);
// code above
return total;
}
getTotalCost(shoppingCart);
reduce
函数中的total
无法访问在外部声明的total
变量(let total=0
),它有自己的作用域,并且仅限于此回调数组函数,因此,一旦reduce
函数返回输出,它的值就不会得到反映
演示
var shoppingCart=[20,15];
函数getTotalCost(价格){
设total=0;
//这一行打印20,但该值未反映在外部声明的总计中
shoppingCart.reduce((合计,金额)=>(console.log(合计,合计+金额));
返回总数;
}
log(getTotalCost(shoppingCart))代码>看起来,您的代码有多个问题:
您需要赋值或只返回的值
我建议也使用起始值,因为空数组使用reduce
会抛出错误
在函数getTotalCost
内部,您需要使用移交的数组prices
,而不是硬编码的shoppingCart
数组。
函数getTotalCost(价格){
退货价格.减少((合计,金额)=>合计+金额,0);
}
log(getTotalCost([20,15]);
log(getTotalCost([])代码>最简单的方法是
shoppingCart.forEach(price => total += price)
您没有使用total=0
值。@Bergi没有找到您。我在哪里没有使用total=0
值,为什么这个reduce函数需要工作?我认为getTotalCost([])
应该使用这个初始值。你的代码没有。尼娜的答案好多了。@Bergi再看看尼娜的答案,total
“s”在函数中也没有使用,OP也没有要求纯函数。@Bergi如果你指的是OP的句子,但我不知道如何将其添加到变量total中,而函数内部Nina的答案也没有帮助。我认为没有必要在这里引入纯函数,这三个有问题的观点本身就站得住脚。这应该是公认的答案。