javascript – 嵌套数组中的Ramda索引
作者:互联网
试图掌握Ramda并且喜欢它到目前为止,但是我正在努力寻找看似非常基本的东西(对不起,如果这是重复的)
我有一系列数组(代表游戏板)
const board = [
[4, 0, 2, 2, 0, 3, 0, 2],
[4, 3, 3, 1, 2, 3, 4, 3],
[4, 4, 3, 2, 4, 1, 1, 4],
[0, 2, 4, 1, 0, 3, 2, 2],
[4, 1, 0, 1, 2, 2, 4, 1],
[3, 3, 4, 3, 2, 0, 1, 3],
[2, 2, 4, 2, 2, 1, 2, 2],
[3, 3, 2, 3, 1, 1, 2, 3]
]
玩家使用匹配的图块构建一个移动,所以类似于:
const move = [[7, 4], [7, 5], [6, 5]]
我想将移动坐标匹配的图块映射到不同的值(例如,那些坐标处的1s将变为-1)
我知道Ramda可以用R.addIndex扩充R.map:const mapWithIndex = R.map(R.addIndex)所以mapWithIndex((i,value)=> //做某事))可以访问索引每个瓷砖,但我确定如何将所有参数传递到最低级别
我甚至无法将i和j加在一起,尝试过类似的东西:
const mapWithIndex = R.addIndex(R.map)
const addIndices = mapWithIndex((i, row) => mapWithIndex((j, tile) => j + i))
但是调用此函数会返回一个函数数组.
我错过了什么?任何帮助将非常感激 :)
解决方法:
有两个问题:
>内部mapWithIndex需要访问行,以便它可以遍历切片
>示例代码中的值和索引参数相反
这应该这样做:
const mapWithIndex = R.addIndex(R.map);
const addIndices = mapWithIndex((row, i) => mapWithIndex((tile, j) => j + i)(row));
标签:javascript,arrays,currying,ramda-js 来源: https://codeday.me/bug/20190706/1395771.html