Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何随机化一系列函数?_Javascript_Arrays_Function_Sorting_Math - Fatal编程技术网

Javascript 如何随机化一系列函数?

Javascript 如何随机化一系列函数?,javascript,arrays,function,sorting,math,Javascript,Arrays,Function,Sorting,Math,这里是初学者,所以我的问题只是let videos=[]数组中的最后一个函数。其他函数也可以工作,但仅当它们是数组中的最后一个索引时。因此,我尝试将函数分配给变量,并将它们放入let videos=[]数组中,同时播放所有视频。我将这些设置为在播放1个视频时隐藏其他视频 此外,我还试图确保每个视频只播放一次 function playNextVideo() { let videos = [showVideo1(), showVideo2(), showVideo3()]; l

这里是初学者,所以我的问题只是
let videos=[]
数组中的最后一个
函数。其他函数也可以工作,但仅当它们是数组中的最后一个索引时。因此,我尝试将函数分配给变量,并将它们放入
let videos=[]
数组中,同时播放所有视频。我将这些设置为在播放1个视频时隐藏其他视频

此外,我还试图确保每个视频只播放一次

function playNextVideo() { 
    let videos = [showVideo1(), showVideo2(), showVideo3()]; 
    let randomVideo = Math.floor(Math.random() * videos.length); 
    videos.splice(randomVideo,1); 
}

document.getElementById('video1').addEventListener('ended',playNextVideo(),false);

与其调用所有三个函数并担心隐藏您不想要的视频,不如存储对函数的引用并一次只执行一个:

function playNextVideo() { 
    let videos = [ showVideo1, showVideo2, showVideo3 ]; 
    let randomVideo = Math.floor( Math.random() * videos.length ); 

    videos.splice(randomVideo, 1)[0](); // Splice out the element at position randomVideo. You'll get back an array of 1 element, so extract the 0th element (a function) and call it
}


与其调用所有三个函数并担心隐藏您不想要的视频,不如存储对函数的引用并一次只执行一个:

function playNextVideo() { 
    let videos = [ showVideo1, showVideo2, showVideo3 ]; 
    let randomVideo = Math.floor( Math.random() * videos.length ); 

    videos.splice(randomVideo, 1)[0](); // Splice out the element at position randomVideo. You'll get back an array of 1 element, so extract the 0th element (a function) and call it
}


randomVideo
是索引,因此您应该使用
return videos[randomVideo]
并执行
showVideo1()
返回函数?是的,它用于使视频仅在它是数组中的最后一项时可见,但该部分现在已解决。:)
randomVideo
是索引,因此您应该使用
return videos[randomVideo]
并执行
showVideo1()
返回函数?是的,它用于使视频仅在它是数组中的最后一项时可见,但该部分现在已解决。:)比我之前建议的答案更好。这很有效!不过有两个小问题。视频不会自动播放到下一个视频,每个视频只能播放一次。我在这里得到了一个答案:但我不确定如何将其应用到我的新情况中。我已更新了答案,在播放之前将视频从阵列中删除,因此视频只播放一次。至于自动播放下一个视频,您必须在视频中添加一个事件处理程序,以便在视频结束时,它们自动调用
playNextVideo()
函数。由于您没有提供实际视频实现的详细信息,这一部分由您自己负责。我找到了一个简单的解决方案,我所要做的就是删除事件侦听器中函数的括号。现在100%有效!比我之前建议的答案更好。这很有效!不过有两个小问题。视频不会自动播放到下一个视频,每个视频只能播放一次。我在这里得到了一个答案:但我不确定如何将其应用到我的新情况中。我已更新了答案,在播放之前将视频从阵列中删除,因此视频只播放一次。至于自动播放下一个视频,您必须在视频中添加一个事件处理程序,以便在视频结束时,它们自动调用
playNextVideo()
函数。由于您没有提供实际视频实现的详细信息,这一部分由您自己负责。我找到了一个简单的解决方案,我所要做的就是删除事件侦听器中函数的括号。现在100%有效!