我很好奇你爲什麼認爲列表清單很難查詢和更改。您可以使用長度爲2的數組作爲[x, y]
對,並將其傳遞給getIn
,setIn
和updateIn
方法。
let grid = Immutable.toJS([
['red', 'green'],
['blue', 'yellow']
]);
grid.getIn([0, 1]); // => 'green';
grid = grid.setIn([0, 1], 'purple');
grid.getIn([0, 1]); // => 'purple';
grid = grid.updateIn([0, 0], cell => cell.toUpperCase());
grid.getIn([0, 0]); // => 'RED';
很容易一些功能應用到網格中的每一個細胞都帶有map(...)
:
可能是比用地圖正試圖找到一個價值座標棘手
grid.map((row, x) => row.map(cell, y) => x + cell + y);
grid.get([1, 1]); // => '1yellow1'
一件事。
const x = grid.findIndex(row => row.contains('blue')); // => 1
const y = grid.get(x).indexOf('blue'); // => 0
grid.get([x, y]); // => blue
好的答案!我可以比較兩個記錄嗎? – kharandziuk
當然你可以,結帳Immutable.is() –
我想這是有道理的添加到答案 – kharandziuk