Javascript 如何在循环中创建具有唯一变量名的动态对象?
我试图以编程方式在JS中创建4个不同的音频对象。我在这个线程中看到过类似的线程: 但是,变量名的更改利用了循环阶段。在线程内部也有使用Javascript 如何在循环中创建具有唯一变量名的动态对象?,javascript,arrays,for-loop,object,audio,Javascript,Arrays,For Loop,Object,Audio,我试图以编程方式在JS中创建4个不同的音频对象。我在这个线程中看到过类似的线程: 但是,变量名的更改利用了循环阶段。在线程内部也有使用this关键字的答案,尽管我不确定如何在循环中以编程方式使用该关键字 尝试: var buttonColours = ["red", "blue", "green", "yellow"] var sounds = []; for (var i=0; i < buttonColo
this
关键字的答案,尽管我不确定如何在循环中以编程方式使用该关键字
尝试:
var buttonColours = ["red", "blue", "green", "yellow"]
var sounds = [];
for (var i=0; i < buttonColours.length; i++) {
sounds[i] = new Audio(`sounds/${buttonColours[i]}.mp3`); // Eg. name of audio file - 'blue.mp3'
}
console.log(sounds);
所需输出(每个播放不同声音时存储不同的音频对象):
使用对象代替将音频对象存储在数组中。要使用它们,可以使用object.keys(声音)在对象的键上循环
var按钮颜色=[“红色”、“蓝色”、“绿色”、“黄色”]
var声音={};
对于(变量i=0;i
为什么不简单地使用一个对象来命名键呢?日志只是说它们是audio
对象。我不确定所述对象的结构,但如果您查找它的路径属性,我打赌它是sounds/red.mp3
等。
[audio, audio, audio, audio]
[redSound, blueSound, greenSound, yellowSound]
var buttonColours = ["red", "blue", "green", "yellow"]
var sounds = {};
for (var i=0; i < buttonColours.length; i++) {
sounds[buttonColours[i]+"Sound"] = new Audio(`sounds/${buttonColours[i]}.mp3`); // Eg. name of audio file - 'blue.mp3'
}
console.log(sounds);
//{redSound: audio, blueSound: audio, greenSound: audio, yellowSound: audio}