【发布时间】:2020-02-07 19:43:24
【问题描述】:
我最近注意到,当使用array.prototype.map() 时,我的回调函数可能会接受第三个参数,即我正在映射的数组。我想知道这个参数是否有任何用例,因为在回调函数内部,无论如何都可以访问数组。
如果我访问我在回调函数中映射的数组,为什么/何时应该使用第三个参数而不是只访问数组?
尽管这两种方法在我能想象到的每个用例中都可以正常工作,但我想知道推荐的方法以及原因。
【问题讨论】:
-
简而言之,您可能无权访问该数组,或者您可能不想引用它。 Case 1
myArr.filter(x => x % 2 == 1).map((x, i, arr) => x+arr.length)- 这是一个链式操作,所以在第一个链之后,你不能引用myArr作为你的工作数据。您可以停止链,分配给一个变量并使用它,但这有点浪费。情况 2:您的回调在另一个范围内指向您在某个地方拥有callback = (x, i, arr) => x+arr.length的数组,而您在另一个地方执行myArr.map(callback),因此您无法在回调中引用原始数组。
标签: javascript arrays array.prototype.map