Javascript 如何在reduce函数中映射参数?
MDN对reduce的定义如下: reduce方法执行在数组的每个元素上提供的reducer函数,从而产生一个输出值 让我们不要想当然,只分析以下语句的语法:Javascript 如何在reduce函数中映射参数?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,MDN对reduce的定义如下: reduce方法执行在数组的每个元素上提供的reducer函数,从而产生一个输出值 让我们不要想当然,只分析以下语句的语法: const array1 = [1, 2, 3, 4]; const reducer = (y, x) => y + x; // 1 + 2 + 3 + 4 console.log(array1.reduce(reducer)); // expected output: 10 // 5 + 1 + 2 + 3 + 4 conso
const array1 = [1, 2, 3, 4];
const reducer = (y, x) => y + x;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
reducer是一个函数,它接受两个参数并返回它们的和
reducer在数组的每个元素上执行,但是“数组的每个元素”只是一个参数,为什么我可以假设SUM是另一个参数,并缓存在某个地方等待下一个add操作?为什么我可以假设reduce最终会返回总和?
有人能回答这些问题吗?来自其他语言背景的人,例如C,也有函数概念。我经常被Javascript的语法弄糊涂
这就是为什么当我看到:
const pipeline = [
array => { array.pop(); return array; },
array => array.reverse()
];
pipeline.reduce((xs, f) => f(xs), [1, 2, 3]);
因为同样,根据MDN,reduce方法执行您在数组的每个元素上提供的reducer函数,从而产生单个输出值
只是这一次,
减速器:xs,f=>fxs
累加器:[1,2,3]
阵列1:管道
那么,我们如何解释它的行为类似于我们的第一个英语例子
reducer在数组的每个元素上执行,但是“数组的每个元素”只是一个参数,为什么我可以假设SUM是另一个参数,并缓存在某个地方等待下一个add操作
提供的回调调用多次,对于数组中的每个项调用一次,对于长度-1次,如果没有提供初始值。您可以自己轻松实现这一点:
常数数组1=[1,2,3,4];
常数减速机=y,x=>y+x;
Array.prototype.myReduce=函数回调,initialValue{
设accum=初始值===未定义
这班
:初始值;
对于设i=0;i