我正在制作类似于youtube音乐的随机播放功能,可在您单击按钮时随机播放列表顺序(不只是随机选择歌曲并忽略列表顺序)。但我无法在不使配对不匹配的情况下对其进行洗牌。
这是VisuJams的更新功能。我已经在其他人发布的问题上尝试了几个答案,但是该页面最终只是忽略了随机播放功能。
this.fileNames = [
//some song files
];
this.trackTitles = [
//matching song titles
];
window.onload = shuffleorder()
function shuffleorder(){
//part i cannot figure out :(
}
我想要的是脚本能够重新排列两个列表,而又不使配对不匹配,并希望页面实际确认该操作
最佳答案
正如其他人所评论的,将fileNames和轨道作为组合对象存储在单个数组中会更好。
无论如何,如果要使用两个数组,则必须确保将两个数组中的相同元素随机化。因此,如果将file 3的元素3切换为element 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);