Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_For Loop_Object_Audio - Fatal编程技术网

Javascript 如何在循环中创建具有唯一变量名的动态对象?

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

我试图以编程方式在JS中创建4个不同的音频对象。我在这个线程中看到过类似的线程:

但是,变量名的更改利用了循环阶段。在线程内部也有使用
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}