从集合中弹出随机元素- JS



例如,在Python中,如果我们有一个集合,我们可以调用set.pop(),它将从集合中删除一个值并返回它。

我正在通过一个算法问题在JS我需要这样做。但是似乎没有办法,因为set.delete()函数需要一个值,而我无法访问这些值。有没有简单的解决方法?

如果说"random"你的意思是任何元素,那么这是一个解决方案:

function shiftSet(set) {
for (const value of set) {
set.delete(value)
return value
}
}
const set = new Set(['a', 'b', 'c'])
shiftSet(set) // 'a'
set // {'b', 'c'}

移除栈中最早加入的元素并返回。

您可以遍历这些值。(这比转换为数组要快。)

function deleteRandomElement(set) {
if (set.size > 0) {
const randomIndex = Math.floor(Math.random()*set.size);
let i = 0;

for(const value of set) {
if(i === randomIndex) {
set.delete(value);
break;
}
i++;
}
}
}

最新更新