如何使用ramda映射跟踪双数组项目索引?

时间:2018-08-25 16:09:16

标签: javascript functional-programming ramda.js

我有这个数组: [[x,x,x,x][x,x,x,x][x,x,x,x][x,x,x,x]]

我想循环和转换这些项目并返回一个新数组。所以我需要同时跟踪数组和数组项索引:

const mapIndexed = R.addIndex(R.map)
const columns = mapIndexed((col, cidx) => // I need ridx here)
const nextGrid = mapIndexed((row, ridx) => columns, currentGrid)

这不起作用。

1 个答案:

答案 0 :(得分:0)

基于@bergi对mapIndexed的建议

const matrix = [
    ['a1', 'b1', 'c1', 'd1'],
    ['a2', 'b2', 'c2', 'd2'],
    ['a3', 'b3', 'c3', 'd3'],
    ['a4', 'b4', 'c4', 'd4'],
]

const mapIndexed = addIndex(map)

const map2d = (f, l) => 
  mapIndexed((row, x) =>
             mapIndexed((col, y) => f(col, x, y), row), l)

map2d((...x) => x, matrix)
// => [[["a1", 0, 0], ["b1", 0, 1], ["c1", 0, 2] etc...