我正在努力更好地理解javascript中的函数式编程,但是我对看到用于映射函数的东西感到有些困惑。以下面的例子为例:
const f = x => (a, b, c) => b + a;
const arr = [1, 2, 3, 4, 5, 6];
const m = arr.map(f(1));
document.write(m);
当f返回a时,它将按预期打印每个值。如果它返回b,它似乎返回索引,并且c将返回每个值的整个数组。为什么这个函数以这种方式工作有原因吗?
答案 0 :(得分:3)
Array.prototype.map()
回调函数有三个默认参数
.map()
函数的数组 f
返回一个设置为callback
的{{1}}
答案 1 :(得分:3)
在您的示例中,您正在使用3-ary回调调用map
,其中:
a
- >当前要素
b
- >目前指数
c
- >原始数组
并返回c
。因此,您的结果将是一个新数组,其中包含对迭代的每个元素的原始数组的引用。
由于您没有对x
做任何事情,因此此处不需要嵌套函数。如何使用这个概念的更好的例子是:
const add = a => b => a + b
const arr = [1, 2, 3, 4]
const newArr = arr.map(add(3))
// [4, 5, 6, 7]
console.log(newArr)