javascript - 我怎样才能在不匹配的情况下随机播放两个 js 数组
问题描述
我正在制作类似于 youtube 音乐的随机播放功能,当您单击按钮时会随机播放列表顺序(不仅仅是随机选择歌曲并忽略列表顺序)。但我无法在不匹配配对的情况下洗牌。
这是 VisuJams 的更新功能。我在其他人发布的问题上尝试了几个答案,但页面最终忽略了随机播放功能。
this.fileNames = [
//some song files
];
this.trackTitles = [
//matching song titles
];
window.onload = shuffleorder()
function shuffleorder(){
//part i cannot figure out :(
}
我想要的是让脚本能够随机播放两个列表,而不会使配对不匹配,并希望页面能够真正确认该操作
解决方案
正如其他人所评论的那样,将文件名和曲目作为组合对象存储在单个数组中会更好。
无论如何,如果你想使用两个数组,你必须确保在两个数组中随机化相同的元素。因此,如果您将元素 3 与文件名的元素 1 切换,则对 trackTitles 执行相同操作。
这是一个示例:
this.fileNames = ["fileA", "fileB", "fileC"];
this.trackTitles = ["titleA", "titleB", "titleC"];
function shuffle() {
var tempA;
var tempB;
for (var a = 0; a < fileNames.length; a++) {
tempA = fileNames[a];
tempB = Math.floor(Math.random() * fileNames.length);
fileNames[a] = fileNames[tempB];
fileNames[tempB] = tempA;
tempA = trackTitles[a];
trackTitles[a] = trackTitles[tempB];
trackTitles[tempB] = tempA;
}
}
shuffle();
console.log(fileNames);
console.log(trackTitles);
推荐阅读
- laravel - 无法在 auth 子文件夹中访问我的 apicontroller
- javascript - 用户在删除第一张图片之前上传第二张图片
- c# - DataRow - OverflowException:值对于 Int32 来说太大或太小
- bash - 如果bash控制台的同一行有多个命令,如何输入sudo密码
- postgresql - 如何将数据从一个 GRAPH 复制到另一个?
- javascript - Javascript如何从1个文本框值复制到多个文本框值
- xamarin - 将数据从 Android Activity 发送到 Xamarin Form
- node.js - 从 ChildProcess 中捕获 EADDRINUSE
- node.js - 如何检查图像是否具有来自 nodejs Web 应用程序的 DCI-P3 颜色空间?
- java - 使用递归解决 Peg Solitaire