如何在Ramda.map中访问迭代索引

Gle*_*ift 30 javascript mapping lodash ramda.js

我曾经写过类似的东西

_.map(items, (item, index) => {});
Run Code Online (Sandbox Code Playgroud)

与lodash.通常我不需要,index但有时它是有用的.

我现在正在迁移到Ramda:

R.map((item, index) => {}, items);
Run Code Online (Sandbox Code Playgroud)

indexundefined.当然,我可以index在上限范围内创建变量,并且每次在map体内增加它,但从FP的角度来看,Ramda代表它是有点错误的.那么是否有任何构建迭代索引的方法?

and*_*dyk 42

退房addIndex:

通过向其回调函数添加两个新参数,从现有索引创建新的列表迭代函数:当前索引和整个列表.

例如,这会将Ramda的简单映射函数转换为更接近Array.prototype.map的函数.请注意,这仅适用于迭代回调函数是第一个参数的函数,以及列表是最后一个参数的函数.(如果不使用list参数,后者可能并不重要.)

来自文档的示例:

var mapIndexed = R.addIndex(R.map);
mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);
//=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']
Run Code Online (Sandbox Code Playgroud)