这些额外的参数如何与 map() 一起工作



我正在努力更好地理解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()

调函数有三个默认参数

  1. 迭代的当前元素
  2. 迭代的当前元素的索引
  3. 调用.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)

最新更新