Javascript 如何洗牌两个js数组而不使它们不匹配
我正在制作一个类似于youtube音乐的洗牌功能,当你点击按钮时,它会洗牌列表顺序(而不仅仅是随机选择一首歌曲并忽略列表顺序)。但我无法在不匹配配对的情况下洗牌 这是VisuJams的更新功能。我尝试了一些其他人发布的问题的答案,但是页面最终忽略了shuffle功能Javascript 如何洗牌两个js数组而不使它们不匹配,javascript,arrays,Javascript,Arrays,我正在制作一个类似于youtube音乐的洗牌功能,当你点击按钮时,它会洗牌列表顺序(而不仅仅是随机选择一首歌曲并忽略列表顺序)。但我无法在不匹配配对的情况下洗牌 这是VisuJams的更新功能。我尝试了一些其他人发布的问题的答案,但是页面最终忽略了shuffle功能 this.fileNames = [ //some song files ]; this.trackTitles = [ //matching song titles ]; window.onload = shuf
this.fileNames = [
//some song files
];
this.trackTitles = [
//matching song titles
];
window.onload = shuffleorder()
function shuffleorder(){
//part i cannot figure out :(
}
我想要的是脚本能够洗牌两个列表,而不会使对不匹配,并且希望页面能够实际确认操作,使用以下方法将其随机化:
vararray1=[“a”、“b”、“c”];
var array2=[1,2,3];
var currentIndex=array1.长度、时间值、随机指数;
而(0!==currentIndex){
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
时间值=数组1[当前索引];
array1[currentIndex]=array1[randomIndex];
array1[randomIndex]=时间值;
时间值=阵列2[currentIndex];
array2[currentIndex]=array2[randomIndex];
array2[randomIndex]=时间值;
}
控制台日志(array1);
控制台日志(array2)代码>正如其他人所评论的那样,最好将文件名和曲目作为组合对象存储在单个数组中
无论如何,如果要使用两个数组,必须确保在两个数组中随机化相同的元素。因此,如果您将元素3与文件名的元素1切换,则对trackTitles也执行相同的操作
以下是一个示例:
this.fileNames=[“fileA”、“fileB”、“fileC”];
this.trackTitles=[“titleA”、“titleB”、“titleC”];
函数shuffle(){
var tempA;
var tempB;
对于(var a=0;a console.log(trackTitles)代码>没有不匹配的对。。。哪双?请提供一个可复制的场景。关于洗牌有很多问题。为什么曲目标题和文件名是分开的?将它们存储为一个对象数组,每个对象都包含标题和文件名。因此,您有两个长度相同的数组,连接每个数据的唯一对象是索引?创建一个具有fileName
和trackTitle
属性的对象数组,并将它们存储在单个数组中。请注意,您正在直接调用该函数window.onload=shuffleorder()
应该是window.onload=shuffleorder
@brioshej文件名和曲目标题