- TicTacToe κ²μμ μΉλ¦¬ λ° λ¬΄μΉλΆλ₯Ό νλ¨νλ
isTicTaeToe
μisDraw
λ₯Ό μ μ λ³μλ‘ μ¬μ©ν μ§ stateλ‘ κ΄λ¦¬ν μ§μ λν΄ κ³ λ―Όμ΄ μμλ€.- stateλ‘ μ¬μ©ν
player
μboard
μ κ²½μ° λ λλ§μ μμ£Ό μν₯μ μ£Όμ§λ§,isTicTacToe
μisDraw
μ κ²½μ° ν λ²λ§ λ λμ μν₯μ μ£ΌκΈ° λλ¬Έμ stateλ‘ κ΄λ¦¬ν νμμ±μ΄ μλμ§μ λν΄ κ³ λ―Όλμλ€.
// μ μ λ³μλ‘ μ¬μ©λ isDrawμ isTicTacToe // λ μ€ νλλΌλ trueκ° λλ©΄ κ²μμ΄ μ’ λ£λλ€ let isDraw = false; let isTicTacToe = false;
// state κ°μ²΄λ‘ κ΄λ¦¬λ isDrawμ isTicTacToe let state = { player: 'X', board: new Array(9).fill(''), isDraw: false, isTicTacToe: false, };
- stateλ‘ μ¬μ©ν
isTicTacToe
μisDraw
λTicTacToe
λΌλ μ»΄ν¬λνΈ λ΄λΆμμ λ³ν λΏ λ§ μλλΌ, νλ©΄ λ λμ μν₯μ λ―ΈμΉκΈ° λλ¬Έμ stateμ μΆκ°νμ¬ κ΄λ¦¬ν΄μΌν¨μ μμλ€.- λν, ν¨μ μλ¨μ μ¬λ¬κ°μ§ λ³μλ€μ΄ μ μΈμ΄ λμ΄μμκΈ° λλ¬Έμ μ΄ λ³μκ° μ΄λκ³³μμ μ¬μ©λλμ§ κ³ λ―Όμ΄ μκ²ΌμΌλ, stateλΌλ κ°μ²΄λ‘ λ¬Άμ΄ νλ©΄ λ λλ§μ κ΄μ¬νλ λ³μλ€μ΄λΌλ κ²μ μ§κ΄μ μΌλ‘ λνλΌ μ μμκ³ μμ§λ λν ν₯μλμλ€.
- stateμΈμ§ μΌλ° λ³μμΈμ§ κ³ λ―Όμ΄ κΉμ΄μ§ κ²½μ°μ, κ°λ¨ν μκ°νμ¬ νλ©΄ λ λμ μν₯μ λ―ΈμΉλ λ³μλ€μ stateλΌκ³ μκ°νλ νΈμ΄ λΉ λ₯Έ μμ¬κ²°μ μ ν μ μλ€λ κ²μ μμλ€.
- λ λμ μν₯μ μ£Όλ λ³μλ€μ stateλ‘ κ΄λ¦¬νμ¬ μμ§λλ₯Ό λμ¬ λ³μλ€μ κ΄λ¦¬ ν μ μμμ λ°°μ λ€.
-
board
stateμ κ°λ€μ΄ TicTacToe μΈμ§ νμΈνκΈ° μνμ¬winConditions
λΌλ 2μ°¨μ λ°°μ΄μ μννμλ€.for (const [one, two, three] of winConditions) { if ( state.board[one] && state.board[one] === state.board[two] && state.board[two] === state.board[three] ) state.isTicTacToe = true; }
state.isTicTacToe = winConditions.some( ([one, two, three]) => state.board[one] && state.board[one] === state.board[two] && state.board[two] === state.board[three] );
-
λ°°μ΄
some
λ©μλλ μλ―Έλ‘ μ μΌλ‘ λ°°μ΄μ μννλ©° μ½λ°±ν¨μ 쑰건μ λ§μ‘±ν κ²½μ° νλλΌλ μμ κ²½μ° μνλ₯Ό λ©μΆκ³ λ°λ‘ boolean κ°μΌλ‘ λ°νλκΈ° λλ¬Έμ μ’ λ λͺ μμ μΌλ‘ isTicTacToe μΈμ§ λνλΌ μ μμλ€.some()
some
λ©μλλ λ°λ³΅ λ©μλμ λλ€. μ΄ λ©μλλ μ£Όμ΄μ§callbackFn
ν¨μκ° μ°Έ κ°μ κ°μ λ°νν λκΉμ§ λ°°μ΄ μμ μλ κ°κ°μ μμλ§λ€ ν λ²μ© νΈμΆν©λλ€. λ§μ½ κ·Έλ¬ν μμλ₯Ό μ°ΎμμΌλ©΄some()
λ©μλλ κ·Έ μ¦μtrue
λ₯Ό λ°ννλ©° λ°°μ΄ μνλ₯Ό λ©μΆ₯λλ€. κ·Έλ μ§ μκ³callbackFn
μ΄ λͺ¨λ μμμ λν΄ κ±°μ§κ°μ κ°μ λ°ννλ©΄ some()μfalse
λ₯Ό λ°νν©λλ€.
some()
λ©μλλfor ... of
λ¬Έμ early return μΌλ‘ μ²λ¦¬νλ κ²κ³Ό λ€λ¦μμ§λ§,some()
μ΄λΌλ λ©μλ μ΄λ¦μΌλ‘ λμμ μμΈ‘νλλ°μ μ‘°κΈμ΄λλ§ λ λμμ΄ λ μ μλ€λ μ μ λ°°μ λ€.
- μμΈ‘ κ°λ₯ν μ½λκ° κ°μ₯ κ°λ
μ± λμ μ½λλΌλ μ μ λκΌλ€.
isDraw
μisTicTacToe
λ₯Ό μ μ λ³μκ° μλ stateλ‘ κ΄λ¦¬νμ λμfor...of
λ¬Έ λμsome()
λ©μλλ₯Ό μ¬μ©νμ λμ κ°μ₯ ν° μ₯μ μ€ νλλ μ½λμ μμΈ‘μ± ν₯μμ΄μλ€.- μλ₯Ό λ€μ΄
isDraw
μisTicTacToe
κ°μ κ²½μ° μ μ λ³μλ‘ κ΄λ¦¬νλλΌλ©΄ κ° λ³μκ° μ΄λμ μ°Έμ‘°λμ΄ μ΄λ»κ² μ¬μ©λλμ§ νμΈμ΄ νμνμ§λ§, state κ°μ²΄λ‘ κ΄λ¦¬ν¨μΌλ‘μ λ λ³μκ° λ λμ μν₯μ μ€λ€λ μ μ λ³΄λ€ μ§κ΄μ μΌλ‘ λνλΌ μ μμλ€. μμΌλ‘λ, λκ° μ½λλΌλ μμΈ‘ κ°λ₯ν μ½λλ₯Ό μμ±νκΈ° μν΄ κΎΈμ€ν λ Έλ ₯μ ν΄λκ°κ² λ€!