Javascript 有人能解释一下这里发生的步骤流程吗?

Javascript 有人能解释一下这里发生的步骤流程吗?,javascript,maps,reduce,Javascript,Maps,Reduce,我试图弄清楚,是每个项在映射运行时都经过reduce,还是map方法完全运行,然后在返回数组后,reduce方法从映射应用到数组 const lineItems = [ { description: 'Eggs (Dozen)', quantity: 1, price: 3, total: 3 }, { description: 'Cheese', quantity: 0.5, price: 5, total: 2.5 }, { description: 'Butter', quantity:

我试图弄清楚,是每个项在映射运行时都经过reduce,还是map方法完全运行,然后在返回数组后,reduce方法从映射应用到数组

 const lineItems = [
{ description: 'Eggs (Dozen)', quantity: 1, price: 3, total: 3 },
{ description: 'Cheese', quantity: 0.5, price: 5, total: 2.5 },
{ description: 'Butter', quantity: 2, price: 6, total: 12 }
];

let store = lineItems.map(item => item.quantity).reduce(sumReducer, 0);

function sumReducer(sum, val) {
  return sum += val;
}

console.log(store);

javascript中所有常规的非生成器函数都具有运行到完成的语义。这意味着,当调用它们时,将一直执行,直到它们返回而不中断


在这种情况下,map()函数执行并返回一个数组,然后reduce()函数执行。

map返回一个数量数组(
[1,0.5,2]
)。之后,我们在后面使用
.reduce
,得到这些数字的总和。了解这一点的一种方法是将步骤拆分为单独的变量并查看结果。如果使用
sum+val.quantity
,则不需要
map
(除非您想要一个通用的
sumReducer
),这称为链接(方法),只需执行
let store=lineItems.reduce((sum,el)=>sum+el.quantity,0)