如何在 Ramda 映射期间访问集合?

How can the collection be accessed during a Ramda map?

举个很简单的例子:

R.map((a, b) => {
  console.log(a, b) // 1, undefined
}, [1, 2, 3])

如何在地图中访问整个集合?

使用该集合的人为示例可能是:

R.map((item, collection) => {
  console.log(item === collection.length)
}, [1, 2, 3])

我可以先将它存储在一个变量中,但这是函数链的末尾

R.map 不允许您访问映射函数内部的集合,但您可以围绕映射函数创建一个闭包,以便给自己一个机会为集合分配名称。

((collection) => R.map((item) => {
  console.log(item === collection.length)
}, collection))([1, 2, 3]);

正如评论所说,Ramda 默认不包含它是有充分理由的。但是有一个名为 addIndex 的装饰器,它添加了索引和集合:

const fn = R.addIndex(map)((elt, idx, coll) => elt == coll.length);
fn([1, 2, 3]); //=> [false, false, true]