方法reducejavascript

方法reducejavascript,javascript,Javascript,我刚刚学会了javascript。为什么返回值为NaN var-arr=[ {名称:“A”,数量:1,价格:20}, {名称:“B”,数量:2,价格:40}, {名称:“C”,数量:3,价格:60}, {名称:“D”,数量:4,价格:80} ]; var测试=arr.REDUCT(功能(项目1、项目2){ 退货(item1.数量*item1.价格)+(item2.数量*item2.价格); }); 控制台日志(测试)基于您可能需要的直觉,该解决方案是否为您产生正确的结果?它所做的是用0初始化输

我刚刚学会了javascript。为什么返回值为NaN

var-arr=[
{名称:“A”,数量:1,价格:20},
{名称:“B”,数量:2,价格:40},
{名称:“C”,数量:3,价格:60},
{名称:“D”,数量:4,价格:80}
];
var测试=arr.REDUCT(功能(项目1、项目2){
退货(item1.数量*item1.价格)+(item2.数量*item2.价格);
});

控制台日志(测试)基于您可能需要的直觉,该解决方案是否为您产生正确的结果?它所做的是用0初始化输出,然后为数组中的每个项目将(数量*价格)的值添加到输出

var arr = [
{ name: "A", quantity: 1, price: 20 },
{ name: "B", quantity: 2, price: 40 },
{ name: "C", quantity: 3, price: 60 },
{ name: "D", quantity: 4, price: 80 }
];
var test = arr.reduce(function(acc, item){
    return acc + (item.quantity * item.price);
}, 0);
console.log(test); //600
从文件中:

reducer函数有四个参数:

  • 蓄能器(acc)
  • 当前值(cur)
  • 当前索引(idx)
  • 源阵列(src)
reducer函数的返回值被分配给累加器,累加器的值在整个数组的每次迭代中都会被记住,并最终成为最终的单个结果值

所以,我相信你想这样做:

var-arr=[
{名称:“A”,数量:1,价格:20},
{名称:“B”,数量:2,价格:40},
{名称:“C”,数量:3,价格:60},
{名称:“D”,数量:4,价格:80}
];
var测试=arr.reduce(功能(acc,curr)
{
退货科目+(当前数量*当前价格);
}, 0);
控制台日志(测试)
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装{最大高度:100%!重要;顶部:0;}
为什么返回值为NaN

首先,您需要了解代码是如何执行的

reduce()是一个函数,它返回一个新数组,并将数组从多个值减少为一个值


reduce是一个聚合器函数,它接受一个初始值,然后根据数组中的每个条目对其进行变异,而这不会反映在代码中。你到底想达到什么目的