gpt4 book ai didi

javascript - 每次将元素插入数组时播放音频

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:18 34 4
gpt4 key购买 nike

我有一个名为 primeFactors 的函数,我试图在其中找到作为某个 n 数的除数的所有数字,但与此同时,它们还必须是质数。只是某种意义上的基本算法。

在这样做的同时,我还认为将每次 while 语句循环遍历该 block 时播放的音频声音会很有趣(只是为了它)。然而,声音只播放一次,即使有时结果是 3 个因素的数组(例如 [2, 7, 11])。在这种情况下,我希望在将每个元素插入数组之前播放三遍声音。这是我的代码:

function primeFact(n) {
let factors = [];
let divisor = 2;
let clap = new Audio('clap.mp3');

while (n > 2) {
if (n % divisor == 0) {
clap.currentTime = 0;
clap.play();
factors.push(divisor);
n = n / divisor;
} else {
divisor++;
}
}
return factors;
}

最佳答案

您可以使用队列。声音只播放一个,因为在那个循环中它几乎是瞬间的。这有效:

<script>
var sounds = new Array,
clap = new Audio('clap.mp3'); // no need to assign it every time
function primeFact(n) {
let factors = [];
let divisor = 2;

while (n > 2) {
if (n % divisor == 0) {
clap.currentTime = 0;
sounds.push(clap); // add sound to queue
factors.push(divisor);
n = n / divisor;
} else {
divisor++;
}
}
playQueuedSounds(); // play all sounds added
return factors;
}
function playQueuedSounds() {
if (sounds.length === 0) return;
var sound = sounds.pop(); // get last sound and remove it
sound.play();
sound.onended = function() { // go look at the queue again once current sound is finished
playQueuedSounds();
};
}
primeFact(25); // two clap noises :)
</script>

关于javascript - 每次将元素插入数组时播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45783037/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com