配列の配列で、特定の配列の要素を含む配列のインスタンスを検索する最良の方法を探しています。
今、私はそれが紛らわしい線であることを理解しています. そのため、シナリオを説明するための例を次に示します。
私は、9 つのセルのゲーム ボードを表す 9 つの項目を持つ配列である検索セットを持っています。値は1
、0
またはnull
:
var board = [1, 0, 1, 1, 0, 1, 0, 0, null];
配列の配列である結果セットもあります。
var winningCombos = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
の各配列は配列内のインデックスをwinningCombo
表しており、これが勝利の組み合わせです。board
8つの勝利の組み合わせがあります。
各勝利の組み合わせは、値がすべて 1 の場合に勝利する 3 つのインデックスのグループです。
つまり、勝つために、ボードは次のようになります。
board = [1,1,1,0,0,0,null,null,0]; // Index 0,1, and 2 are 1, matching winningCombos[0]
また
board = [null,null,1,0,1,0,1,null,0]; // Index 2,4, and 6 are 1, matching winningCombos[7]
私の質問は:
Javascriptでこの操作を実行する方法は何ですか(おそらくES6で)?
私がこれまでに思いついたのはこれです:
const win = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]];
let board = [null,null,1,0,1,0,1,null,0];
let score = [];
board.forEach(function(cell, index)
{
if(cell === 1)
score.push(index);
});
console.log(score);
console.log(win.indexOf(score) > -1)
しかし、配列の配列で配列を見つけるのに苦労しています。score
is[2,4,6]
と thisの正確な配列は に存在しwin
ますが、Javascript でオブジェクトの等価性が機能する方法のため、結果には表示されません。
一言で言えば、私はscore
存在するかどうかを確認しようとしていますwin
私はこの解決策を見つけましたが、かなりハッキーなようです。これを処理するより良い方法はありますか?