2013-09-22 4 views
0

У меня есть множество массивов и множество папок с файлами, к которым я пытаюсь добраться. Элементы в массивах соответствуют именам файлов, а имена массива соответствуют именам папок.Преобразование имени массива в строку

Так что я

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

& подобное в виде звуковых файлов. Например, `myArray/my.mp3 '

Я пытаюсь создать такую ​​строку динамически. Я хотел каким-то образом преобразовать имена массивов в строки, но, видимо, это невозможно. Любые другие решения очень ценятся.

+0

Вы никогда не хотите, чтобы в вашей программе были строки переменных. Пожалуйста, сообщите нам, что вы [на самом деле пытаетесь сделать] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – Bergi

+1

Возможный дубликат [Имя динамической переменной Javascript] (http://stackoverflow.com/questions/5117127/javascript-dynamic-variable-name) – Boaz

+0

ОК. Теперь я отредактирую вопрос, чтобы более конкретно узнать, чего я хочу достичь. – sanjaypoyzer

ответ

0

Не уверен, что я понимаю ваш вопрос. Если вам нужна гибкость, вы можете использовать объект. Инициализировать его в начале вашего приложения жизненного цикла, как так:

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

Позже можно назначить как имя и значение для вашего объекта на основе действий пользователя:

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

Надежда это помогает,

Р.

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] = ...; 
+0

Он, кажется, хочет получить полную противоположность, получая переменное имя из значения – Bergi

+1

@Bergi: wacky. Добавлено описание того, как совершить такое преступление. – 6502

0

вы хотите использовать объект, где имена свойств программно доступны:

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

можно легко петли, что объект, а динамически обращаться к массивам через bracket notation.

Смежные вопросы