我正在尋找最佳方法來搜索包含給定數組的元素的數組的實例,該數組是一個數組數組。Javascript:搜索數組中的數組
現在,我明白這是一個混亂的線。所以這裏有一個例子來說明這個場景。
我有一個搜索集,其中有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個獲勝組合。
每一個成功的組合是一組3個指標,即會獲勝,如果它們的值都是1
即贏,董事會可以:
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
是[2,4,6]
,並且這個確切的數組存在於win
中,但它並未顯示在結果中,因爲我假設Javascript中的對象相等方式起作用。
概括地說,我想看看是否存在win
score
我發現this的解決方案,但它似乎很哈克。有沒有更好的方法來處理這個問題?
如何'board'陣列對應'win'陣列?爲什麼'win'有八個索引,'.'長度是'8',在'board'有九個索引,'.length'是'9'? – guest271314
我承諾董事會和贏得Combos,但麻煩搞清楚你到底想要計算什麼。你試圖找出勝利中是否存在分數? – skav
@ guest271314:電路板陣列是由9個電池組成的陣列。 win數組是所有可能的3個單元格組合中的一個數組,當它們的值爲1時,它們將贏得勝利。我還會將此添加到該問題中 – nikjohn