You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何随机输出数组元素并将其从数组中移除?

问题:实现无重复随机展示数组元素

在我的程序中,用户点击按钮时会从数组中随机选择一个字符串元素并展示给用户。我的目标是实现「展示后将该元素从数组中移除」的功能,避免重复展示,确保用户每次看到的都是新元素。

v1版本代码思路

Array1 = [] // 存储所有元素的完整数组
Array2 = [] // 存储用户已查看过元素的数组

从Array1中输出元素给用户后,会将该元素加入Array2;在展示元素前,会将随机选中的元素与Array2中的所有元素进行交叉比对,大致逻辑如下:

for (let i = 0; i < NumberOfArray2Items; i++) {
  if (Array1ItemToDisplay === Array2[i]) {
    NumberOfMatches = j++ // 递增数值变量,大于0则表示该元素已展示过
  }
}

if (NumberOfMatches === 0) {
  DisplayCurrentArrayItem();
} else if (NumberOfMatches > 0) {
  SelectAnotherArrayItemToDisplay();
}

我认为这个方案效率很低,因为它需要两个耗时的步骤:

  • 遍历Array2中的所有元素进行交叉比对
  • 若多次匹配到已展示元素,可能需要重复执行上述步骤数十甚至数百次

由于数组将包含数万个元素,我担心当前代码执行效率极低。请问是否有更简单、高效的方法,比如直接筛选出未展示的元素列表再从中选择?

内容的提问来源于stack exchange,提问作者king_anton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:10:51