我正在努力更好地理解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 将返回每个值的整个数组。这个函数以这种方式工作有什么原因吗?
Array.prototype.map()
回调函数有三个默认参数
- 迭代的当前元素
- 迭代的当前元素的索引
- 调用
.map()
函数的数组
f
返回一个设置为.map()
callback
的函数
另请参阅Array.from()
在您的示例中,您使用 3 元回调调用 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)