这些额外的参数如何与map()一起使用?

时间:2018-01-27 21:23:40

标签: javascript ecmascript-6 functional-programming

我正在努力更好地理解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将返回每个值的整个数组。为什么这个函数以这种方式工作有原因吗?

2 个答案:

答案 0 :(得分:3)

Array.prototype.map()回调函数有三个默认参数

  1. 迭代的当前元素
  2. 迭代的当前元素的索引
  3. 调用.map()函数的数组
  4. f返回一个设置为callback的{​​{1}}

    的函数

    另见Array.from()

答案 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)