sch*_*ude 3 javascript arrays array.prototype.map
我最近注意到,在使用 时array.prototype.map(),我的回调函数可能接受第三个参数,即我正在映射的数组。我想知道这个参数是否有任何用例,因为在回调函数内部,无论如何都可以访问数组。
如果我访问在回调函数内映射的数组,为什么/何时应该使用第三个参数而不是仅仅访问数组?
尽管这两种方法在我能想象到的每个用例中都应该可以正常工作,但我想知道哪种方法是推荐的方法以及原因。
当您链接多个数组方法并需要访问数组的中间状态(上一个操作的结果)时,第三个参数可能很有用:
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)
编辑:这个答案已经(巧合地)在标记的欺骗中给出了。去那边看看吧。
您可能希望以通用方式引用原始数组。例如,回调可能是一个单独的函数,而不仅仅是通常看到的匿名函数:
function arrayMapper(val, idx, arr) {
// Some operations which use arr
}
myArray.map(arrayMapper);
myOtherArray.map(arrayMapper);
Run Code Online (Sandbox Code Playgroud)
请注意,在执行 的每个过程中arrayMapper,arr参数如何引用外部作用域中的不同数组。
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |