function calWinner(arr) {
//winning combination
const winningIds = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
]
for (let i = 0; i < winningIds.length; i++) {
calculate(arr, winningIds[i])
}
}
function calculate(sup, sub) {
sup.sort()
sub.sort()
let i = 0
let j = 0
for (i, j; i < sup.length && j < sub.length;) {
if (sup[i] < sub[j]) {
++i
} else if (sup[i] == sub[j]) {
++i, ++j
} else {
return false
}
}
return j == sub.length;
}
calWinner([1, 3, 7, 4])
我正在尝试编写一个接受数组的函数,并检查它是否在函数内部的对象中的嵌套数组中有每个元素。
我添加了一个我从post找到的函数,但不确定为什么我得到的是undefined而不是true。
答案 0 :(得分:2)
假设你想要返回true
,如果来自winsIds的任何数组在arr中,这就是代码:
function calWinner(arr) {
//winning combination
const winningIds = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
]
var containsWinner = false;
for (let i = 0; i < winningIds.length && !containsWinner; i++) {
containsWinner = calculate(arr, winningIds[i])
}
return containsWinner;
}
function calculate(sup, sub) {
sup.sort()
sub.sort()
for (var i = 0; i < sub.length; i++) {
if (sup.indexOf(sub[i]) == -1) {
return false;
}
}
return true;
}
calWinner([1, 3, 7, 4]);