我正在寻找在数组数组中搜索包含给定数组元素的数组实例的最佳方法。
现在,我明白这是一条令人困惑的路线。所以这里有一个例子来说明这个场景。
我有一个搜索集,它是一个包含 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)
但是我很难在数组数组中找到数组。尽管is和这个确切的数组存在于 中,但它并没有出现在结果中,因为我假设对象相等在 Javascript 中的工作方式。score
[2,4,6]
win
简而言之,我正在尝试查看是否score
存在于win
我找到了这个解决方案,但它似乎很hacky。有没有更好的方法来处理这个?