如何在 javascript 上返回 Set() 的值



我试图在 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!'```

最新更新