javascript - 我怎样才能随机播放两个js数组而不使它们不匹配

标签 javascript arrays

我正在制作一个类似于 YouTube 音乐的随机播放功能,当您单击按钮时,它会随机播放列表顺序(不仅仅是随机选择一首歌曲并忽略列表顺序)。但我无法在不使配对不匹配的情况下对它们进行洗牌。

这是 VisuJams 的更新功能。我已经针对其他人发布的问题尝试了几个答案,但该页面最终忽略了随机播放功能。

this.fileNames = [
//some song files
    ];

this.trackTitles = [
//matching song titles
    ];
window.onload = shuffleorder()

function shuffleorder(){
//part i cannot figure out :(
}

我想要的是脚本能够打乱两个列表,而不会导致配对不匹配,并希望页面真正确认该操作

最佳答案

正如其他人评论的那样,将文件名和轨道存储为单个数组中的组合对象会更好。

无论如何,如果您想使用两个数组,则必须确保在两个数组中随机化相同的元素。因此,如果您将 fileNames 的元素 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);

关于javascript - 我怎样才能随机播放两个js数组而不使它们不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56171404/

相关文章:

javascript - 为什么在 React 中将 css 导入到全局范围?

javascript - 验证以分号分隔的多个电子邮件,并且所有电子邮件都必须与特定域匹配

c++ - 传递给函数时 vector<string> vs string[]

c - 阅读一个txt。以 (int float float string) 的格式并将值放入并行数组中

python - 有效地按降序对numpy数组进行排序?

javascript - 内部点击中的 JQuery 错误 ID

javascript - 在提示中单击“确定”

asp.net - 如何 trim ClientValidationFunction 中的字符串

javascript - 在 TypeScript 中扩展字符串

c# - 使用一系列数字初始化一个 int 数组