Javascript array.prototype.map 何时/为何使用第三个参数

sch*_*ude 3 javascript arrays array.prototype.map

我最近注意到,在使用 时array.prototype.map(),我的回调函数可能接受第三个参数,即我正在映射的数组。我想知道这个参数是否有任何用例,因为在回调函数内部,无论如何都可以访问数组。

如果我访问在回调函数内映射的数组,为什么/何时应该使用第三个参数而不是仅仅访问数组?

例子

尽管这两种方法在我能想象到的每个用例中都应该可以正常工作,但我想知道哪种方法是推荐的方法以及原因。

ant*_*nku 8

当您链接多个数组方法并需要访问数组的中间状态(上一个操作的结果)时,第三个参数可能很有用:

const source = [-3,-2,-1,0,1,2,3,4,5];
source
  .filter(n => n >= 0)
  .map((n, index, arr) => {
     // arr contains only non-negative numbers
     // here you may have some logic that rely on it
     return n;
  })
Run Code Online (Sandbox Code Playgroud)


MTC*_*ter 5

编辑:这个答案已经(巧合地)在标记的欺骗中给出了。去那边看看吧。


您可能希望以通用方式引用原始数组。例如,回调可能是一个单独的函数,而不仅仅是通常看到的匿名函数:

function arrayMapper(val, idx, arr) {
  // Some operations which use arr
}

myArray.map(arrayMapper);
myOtherArray.map(arrayMapper);
Run Code Online (Sandbox Code Playgroud)

请注意,在执行 的每个过程中arrayMapperarr参数如何引用外部作用域中的不同数组。