Javascript:(Math.floor(Math.random()* songs)+ 1)+'。mp3'

时间:2016-01-03 15:05:13

标签: javascript

我目前有这个js代码:

audio.src = path + 'assets/music/'+(Math.floor(Math.random() * songs) +      1)+'.mp3'

在我的网站上,我有文件夹资产/ music / 1.mp3,2.mp3,3 .mp3,所以它 选择一首随机歌曲然后播放歌曲。 (的Math.random)

我不想使用math.random,因为有时候它会播放两次相同的音轨而且很烦人。

那么任何解决方案?

网站:http://selen.xyz javascript代码:http://selen.xyz/animate.js

2 个答案:

答案 0 :(得分:1)

使用Array.prototype.slice()创建包含文件路径的数组副本,创建空数组songs,使用.splice()调用Math.floor(Math.random() * copy.length)以从{{1}检索随机项},从copy移除所选项目,当copy songs.length原始数据arr时,.length应填充伪随机选择items,设置audio元素以将songs数组中的项目用作songs

src

答案 1 :(得分:0)

  1. 获取localstorage中最后播放的歌曲ID(在第一个实例中未定义)
  2. 生成随机歌曲ID(与存储的值不匹配)
  3. 将新歌曲ID存储在localstorage
  4. var songs = 10,
        last_song_id = localStorage.getItem('last_song_id'),
        song_id;
    
    do {
        song_id = Math.floor(Math.random() * songs) + 1;
    } while(last_song_id === song_id);
    
    localStorage.setItem('last_song_id', song_id);
    
    audio.src = path + 'assets/music/' + song_id;