2016-04-18 10 views
4

Попытка схватиться с 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]] 

Я хотел бы карту плитки где матча двигаться coordiantes к другому значению (например, в 1 s на этих coordiantes стал бы -1)

Я знаю Ramda может увеличить R.map с R.addIndex: const mapWithIndex = R.map(R.addIndex) так mapWithIndex((i, value) => // do something)) бы получить доступ к индексу каждой плитки, но я уверен, как пройти вниз все аргументы самого низкого уровня

Я даже не могу добавить я и J вместе, пытались что-то вроде:

const mapWithIndex = R.addIndex(R.map) 
const addIndices = mapWithIndex((i, row) => mapWithIndex((j, tile) => j + i)) 

Но вызов этой функции возвращает массив функций.

Что мне не хватает? Любая помощь будет высоко ценится :)

ответ

1

Было два вопроса:

  • внутренних mapWithIndex потребности доступ к row поэтому он может перебирать плитки
  • параметров и значение индекса были обратными в вашей выборке код

Это следует сделать это:

const mapWithIndex = R.addIndex(R.map); 
const addIndices = mapWithIndex((row, i) => mapWithIndex((tile, j) => j + i)(row)); 
+0

Фантастично, спасибо большое, не знаю, почему я думал, что индексный аргумент пришел первым. Я предполагаю, что мой следующий вопрос: как я могу разбить это на более мелкие единицы, которые могут передавать массив игроков в качестве аргумента, а также i, j? –

 Смежные вопросы

  • Нет связанных вопросов^_^