我试图在 4 个中连续找到一组 7 个。 我将 7 个选项的数组划分为 4 个。 我正在使用 Set(( 方法来找出其中一个集合的值是否为 1 并返回其值加上一条消息。
function checkWinner(array){
var set_1 = new Set(array.slice(0, 4));
var set_2 = new Set(array.slice(1, 5));
var set_3 = new Set(array.slice(2, 6));
var set_4 = new Set(array.slice(3, 7));
var sets = [set_1, set_2, set_3, set_4];
for (var i = 0; i < sets.length; i++){
if (sets[i].size === 1){
// trying to return the set's only value + a message 'Wins!'
// **return sets[i][0] --> that did'nt work**
}
}
return 'Draw!'
}
let blackWinner = checkWinner(['black', 'red', 'black', 'black', 'black', 'black', 'red']);
console.log(blackWinner); //-> 'Black Wins!'```
您可以使用set.values()
来获取集合的迭代器,调用.next()
以获取第一个元素,并获取其value
。
return sets[i].values().next().value + " wins!";
function checkWinner(array){
var set_1 = new Set(array.slice(0, 4));
var set_2 = new Set(array.slice(1, 5));
var set_3 = new Set(array.slice(2, 6));
var set_4 = new Set(array.slice(3, 7));
var sets = [set_1, set_2, set_3, set_4];
for (var i = 0; i < sets.length; i++){
if (sets[i].size === 1){
return sets[i].values().next().value + " wins!";
}
}
return 'Draw!'
}
let blackWinner = checkWinner(['black', 'red', 'black', 'black', 'black', 'black', 'red']);
console.log(blackWinner);
你可以拿生成器获取值,调用next
并获取值。
function checkWinner(array){
var set_1 = new Set(array.slice(0, 4));
var set_2 = new Set(array.slice(1, 5));
var set_3 = new Set(array.slice(2, 6));
var set_4 = new Set(array.slice(3, 7));
var sets = [set_1, set_2, set_3, set_4];
for (var i = 0; i < sets.length; i++){
if (sets[i].size === 1){
return sets[i].values().next().value;
}
}
return 'Draw!'
}
let blackWinner = checkWinner(['black', 'red', 'black', 'black', 'black', 'black', 'red']);
console.log(blackWinner); //-> 'Black Wins!'```