特別是,我有一個ImmutableJS地圖列表,並且我想有條件地將記錄更新爲相同的值(可能只包括更新所有這些值)。該用例揭示了掃雷中的地雷,當某人失去遊戲時。這是由isVisible
瓷磚設置爲true完成的,如果isMine
也是如此(或者只是讓每瓦可見,無論isMine
)更新ImmutableJS列表中的多個條目
所以我的JS架構是這樣的(其中數組列表和對象是地圖):
game = {
isGameOver: false,
tiles: [
{
isMine: boolean,
isRevealed: boolean
},
...
]
}
所以我想要做的是,從game
,設置isRevealed
爲true,每瓦其中isMine
是真實的。
這就是我想出了,但它看起來那麼可怕我也希望有另一種方式
function revealAll(game){
let revealedTiles;
revealedTiles = game.get('tiles').map(tile => {
if (tile.get('isMine')) {
tile = tile.set('isRevealed', true);
}
return tile;
});
return game.set('isGameOver', true).set('tiles', revealedTiles);
}
這個成功結束了比賽(套isGameOver
爲true),並顯示出有地雷所有圖塊(將isRevealed
設置爲true,對於isMine
等於true的每個圖塊),但我可以說只是看它既低效又麻煩。有沒有內置的方式來完成我在這裏做的事情?
它似乎沒有什麼可怕的錯誤,但如果你非常擔心它,只需在映射列表之前使用.withMutations即可。但是,對於非關鍵性代碼中的幾百個對象來說,似乎不值得仔細思考。 – pvg