Javascript 向函数内部的变量添加精简数组?(js)

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); //

所以我有一个赋值,我只能向某些行添加代码,但我需要得到数组的和,然后返回它。我使用了reduce,但我不知道如何在函数内部将其添加到变量total中,并且我不允许更改total的值

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的答案也没有帮助。我认为没有必要在这里引入纯函数,这三个有问题的观点本身就站得住脚。这应该是公认的答案。