2013-04-29 3 views
1

Мне нужно «получить» массив, но все, что у меня есть, это строка, которая соответствует имени массива. Очевидно, что такого рода вещи не будет работать, но это показывает, что я пытаюсь сделать:Javascript: имя массива как строка; Нужно ли ссылаться на фактический массив

var arrayname = new Array(1, 2, 3); 
var array = 'arrayname'; 

Alert(array[0]); 

Конечно, приведенный выше пример yeilds «а» вместо 1, как мне нужно.

Фоном является то, что я работаю с панелью управления Hyperion Business Intelligence, где используется этот массив, определяется подстрокой имени кнопки, которая использовалась для ее вызова.

+0

Где массив ссылки? Является ли это свойством какого-либо объекта. Надеюсь, вы не говорите мне, что это глобальная переменная! – Brandon

+1

Это поможет: http://stackoverflow.com/questions/1664282/javascript-refer-to-a-variable-using-a-string-containing-its-name – tymeJV

+0

Спасибо за страницыlap tymeJV :) Я искал, но соответствующие ключевые слова ускользнули от меня, и у автоматических результатов этого не было. Это почти мой вопрос. В моем макете, похоже, eval() - это то, что я искал, но мне нужно применить его на практике. Благодаря! – undrline

ответ

6

Это очень просто.

var storage = {}; 
storage.arrayname = [1, 2, 3]; 
alert(storage["arrayname"].join(',')); 

Загрязнение глобального пространства имен сильно обескуражено. Я настоятельно рекомендую вам воздержаться от использования объекта window для этой цели. Прочтите HERE для более подробной информации.

+0

Я думаю, что это похоже на ответ @ pscoder, но создает что-то другое, кроме окна для использования. Все еще кажется неудобным и сложным для моих целей, но, возможно, я вернусь к нему. – undrline

+1

@EdwardD: Это не сложно и не сложно. Это просто простой объект, и это правильное решение. Вы можете сократить его до 'var obj = {arrayname: [1,2,3]};' Тогда получите доступ как 'obj [array] [0];' – 2013-04-29 15:43:39

2

Попробуйте использовать объект window, чтобы получить его, если он определен в контексте окна.

var array = window["arrayname"] 
+1

К сожалению, у Hyperion нет окна или документа, которые я могу вызвать в их версии Javascript. – undrline

0

Вы можете использовать

array = window['arrayname'];