【发布时间】:2022-01-24 16:20:58
【问题描述】:
我正在尝试根据一组非常明确的要求生成随机 ID。
有 3 个数组 itemsAvailable、itemsSeen 和 itemsTaken。
itemsAvailable 看起来像这样:[{ id: 1, ... }, ...] 一个具有各种字段的对象数组,其他字段对于此功能而言无关紧要,我们只关心 id 字段。它是一个数字,即1 -> X,每出现一个项目,X 就增加 1。
itemsSeen 只是用户看到的 id 的数组,所以如果他们看到 1, 7, 16 的 id,它看起来像 itemsSeen = [1, 7, 16]。
itemsTaken 也只是他们看到并选择采用的 id 的数组,例如 itemsTaken = [1, 16]。他们只能拿走 itemsSeen 中存在的物品。
函数开始时,根据itemsAvailable的长度生成一个随机id。每个项目的 id 将匹配其索引位置。
如果itemsSeen 或itemsTaken 包含随机id,则在itemsAvailable 的长度范围内生成一个新的id,直到它不在任一数组中。
当一个数字生成并显示给用户时,它应该被添加到itemsSeen 数组中。如果该项目被选中,则应将其添加到 itemsAvailable 数组。然后再次从itemsAvaialbe 获取随机物品。
code sandbox 我所拥有的。
【问题讨论】:
-
请将代码添加到问题中。
-
"每个项目的 id 将匹配它的索引位置。" -- 数组索引从 0 开始,但你的 ID 从 1 开始。所以大概每个项目的 ID 将是它的索引 + 1。
-
你让这变得比它需要的更复杂。将所有 ID 放入
itemsUnseen数组中。选择这个数组的一个随机元素。从itemsUnseen中删除元素并将其添加到itemsSeen。 -
Barmar,实际项目的 ids 从 0 开始,这只是总体布局的模型。会尽快尝试并回复您!
标签: javascript arrays random