javascript - 是否可以将变量存储在数组或对象中并引用它以获取变量的值而不是变量的字符串名称?

标签 javascript arrays object audio

我拥有的是一系列存储为变量的声音文件。我想创建动态数组,以便根据满足的某些条件填充某些声音。

例如,我声明了以下 3 个声音文件。

var E82 = new buzz.sound("https://github.com/CMGDesignStudios/Letters-and-Sounds/blob/master/LE0.mp3?raw=true");
var F87 = new buzz.sound("https://github.com/CMGDesignStudios/Letters-and-Sounds/blob/master/LE1.mp3?raw=true");
var FS92 = new buzz.sound("https://github.com/CMGDesignStudios/Letters-and-Sounds/blob/master/LE2.mp3?raw=true");

在某些情况下,我可能需要前两个声音文件。其他时候,我可能需要第二两个声音文件。所以我创建了以下对象。

var soundFileGroups = {criteria1:[E82,F87],
                       criteria2:[F87,FS92]};

我尝试使用

访问我需要的内容
var currentSounds = soundFileGroups ["criteria1"];

var currentSounds = soundFileGroups ["criteria1"][0];

这些都会使我的程序崩溃。

我还尝试按如下方式创建对象:

var soundFileGroups = {criteria1:"E82,F87",
                       criteria2:"F87,FS92"};

我可以通过以下方式访问这些数据:

var currentSounds=soundFileGroups["criteria1"].split(',');

但是,我只得到一个带有变量名称的字符串,并且不知道如何告诉 javascript 检索与该字符串匹配的变量名称的数据。

是否可以在 JavaScript 中声明多个变量的值,将这些变量名称放入数组或对象中,然后通过从数组或对象中索引变量名称来访问变量的值?

最佳答案

对于这个问题:

但是,我只得到一个带有变量名称的字符串,并且不知道如何告诉 javascript 检索与该字符串匹配的变量名称的数据。

您可以使用eval获取变量的值

var currentSounds=soundFileGroups["criteria1"].split(',');
//here currentSounds is an array of variable names.
//to get the value out of them do a for loop
currentSounds.forEach(function(sound){
  var val = eval(sound);
  console.log(val);
  //do your code with val
})

希望这有帮助!

关于javascript - 是否可以将变量存储在数组或对象中并引用它以获取变量的值而不是变量的字符串名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35532359/

相关文章:

python - 数组比较与numpy中的元素比较不匹配

javascript - 使用带有子方法的函数可以吗?

javascript - 为什么不显示引导工具提示的样式?

javascript - Codechef api 上的 CORS(使用 angularjs)

MySQL - 搜索 JSON 数据列

javascript - 组数组对象

Python - 用列表提供对象

javascript - 创建对象时了解 JavaScript 中 'this' 的位置

javascript - Selenium javascript webdriver 如何使用 findElements

javascript - 根据 Highcharts 中的列值更改数据标签颜色、旋转和对齐值