javascript - 从 Javascript 嵌套数组/数据结构中选择随机项

标签 javascript arrays random nested

我正在寻找关于这是否是我想要实现的最佳数据结构的建议,如果是,我将如何创建一个随机选择歌曲的函数。

var song = {

    john: [ "Come Together", "Revolution" ],
    paul: [ "Hey Jude", "Blackbird" ],
    george: [ "Something", "Here Comes the Sun" ],
    ringo: [ "Yellow Submarine", "With a Little Help from my Friends" ]
};

这是它的工作原理:

  1. 计时器在用户点击开始时开始计时
  2. 屏幕上显示一首歌曲(随机选择)
  3. 然后用户单击四个图标/名称(john、paul、george 或 ringo)之一
  4. 答案已记录(正确或不正确)。
  5. 随机选择另一首歌曲,直到计时器结束。

我不想要这个问题的解决方案,我只想知道我是否正在使用最好的数据结构......如果我是(或者如果我不是!),我会怎么做关于生成随机歌曲。我对此很陌生,我想做的事情比我以前尝试过的任何事情都要复杂。最后一点……当歌曲列表完成时,John 和 Paul 的个人阵列将会非常长……

谢谢!

最佳答案

我建议使用关系结构。

var artists = ['john', 'paul', 'george', 'ringo'];
var songs = [
  { name: "Come Together", artist: 0 },
  { name: "Revolution", artist: 0 },
  { name: "Hey Jude", artist: 1 },
  { name: "Blackbird", artist: 1 },
  { name: "Something", artist: 2 }
];
  1. 这允许您根据需要向艺术家添加更多属性(例如图片、维基百科链接等)。
  2. 它允许更快地查找给定歌曲的艺术家。您当前的设置需要大量成本才能找到给定歌曲的艺术家。
  3. 更容易随机、均匀地挑选一首随机歌曲。您当前的设置很难随机且一致地挑选歌曲。

关于javascript - 从 Javascript 嵌套数组/数据结构中选择随机项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40682672/

相关文章:

javascript - 在任何键盘上的 Edge 中检测 @ 字符 onKeyUp

javascript - Javascript constructor 属性的意义是什么?

arrays - 如何知道一组一定数量的字符串是否在 2 个数组中匹配

javascript - Lint 和 Prettier 存储库没有大规模合并冲突

javascript - 你能将组件 Prop 传递给 mapGetters vuex 吗

php - 查询背后的实时搜索引擎逻辑

python 类。 key 作为 self.key 存在,但不存在于 self.__dict__ 中

c# - 随机数 0's or 1' s

java - 如何生成随机对而不在android中再次重复相同的对

python - 在 python 中使用不同参数的包装函数