1

我有一堆数组,还有一堆文件夹,里面有我想要访问的文件。数组中的项目对应于文件名,数组名与文件夹名匹配。

所以我有

 var myArray = ['my', 'file', 'here'];
 var myArray2 = ['some', 'more', 'files'];

与音频文件类似。例如 `myArray/my.mp3'

我正在尝试动态创建这样的字符串。我想以某种方式将我的数组名称转换为字符串,但显然这无法完成。非常感谢任何其他解决方案。

4

3 回答 3

0

不确定我是否理解你的问题。如果你想要灵活性,你可以使用一个对象。在您的生命周期应用程序开始时对其进行初始化,如下所示:

var obj = { name: 'tmp', value: null }

稍后,您可以根据用户操作为对象分配名称和值:

obj['name'] = 'chosenArray';
obj['value'] = myArrayTwo;

希望这可以帮助,

R。

于 2013-09-22T12:32:17.660 回答
0

从技术上讲,您可以使用包含变量名称的字符串访问变量:

var array1 = [1,2,3,4];
var array2 = [5,6,7,8];

var pick = "array2";

var chosen = window[pick];

你也可以这样创建一个全局变量

var newvarname = "array3";

window[newvarname] = [9,10,11,12];

这是有效的,因为window在浏览器中是一个包含所有变量和函数的预定义对象。除了更改和访问全局变量之外,window您还可以遍历所有全局变量:

// Collect names of all globally defined arrays
arrays = [];
for (var n in window) {
    if (window[n] && window[n].constructor == Array)
        arrays.push(n);
}

但我认为在极少数情况下您可能想要这样做(如果您有一个名为“foo”的函数或变量并且目录包含一个名为“foo”的文件,您真的要销毁您的函数/变量吗? )。

可能你应该简单地使用一个对象来存储你的文件

var myobj = {};
myobj[filename] = ...;
于 2013-09-22T12:38:49.027 回答
0

您想使用属性名称可通过编程访问的对象:

var audioFiles = {
    "myArray": ['my', 'file', 'here'],
    "myArray2": ['some', 'more', 'files']
};

您可以轻松地循环该对象,并通过括号符号动态访问数组。

于 2013-09-22T12:44:22.460 回答