问题描述
当从 class Grid(Widget):
pass
class Application(App):
def build(self):
kv=Builder.load_file('application.kv')
return kv
app=Application()
app.run()
数组中调用随机元素时,应将其删除,而后索引不得为空且未定义。问题是 videos
一直调用同一个元素两次,而它应该在只调用一次后从数组中删除该元素。 (数组中的每个元素都是一个函数)。
splice_video();
解决方法
在外面声明函数数组,而不是在里面声明,这样从数组中移除函数是持久的。
const videoFns = [showVideo1,showVideo2,showVideo3,showVideo4,showVideo5];
function playNextVideo() {
const randomIndex = Math.floor(Math.random() * videoFns.length);
const [videoFn] = videoFns.splice(randomIndex,1);
videoFn();
}
现场演示:
const videoFns = Array.from(
{ length: 5 },(_,i) => () => console.log('video ' + i)
);
function playNextVideo() {
if (!videoFns.length) return;
const randomIndex = Math.floor(Math.random() * videoFns.length);
const [videoFn] = videoFns.splice(randomIndex,1);
videoFn();
}
document.querySelector('button').addEventListener('click',playNextVideo);
<button>click</button>