2

I have to "get at" an array, but all I have is a string that matches the array name. Obviously this kind of thing won't work, but it shows what I'm trying to do:

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

Alert(array[0]);

Of course, the example above yeilds 'a' instead of 1, like I'd need.

The background is that I'm working with a Hyperion Business Intelligence dashboard, where which array used, is determined by a substring of the button's name that was used to call it.

8
  • Where is the array referenced? Is it a property of some object. I hope you're not telling me that it's a global variable! Commented Apr 29, 2013 at 15:08
  • 1
    This will help: stackoverflow.com/questions/1664282/… Commented Apr 29, 2013 at 15:08
  • Thanks for the pageslap tymeJV :) I did search, but the appropriate keywords eluded me, and the automatic results didn't have it. It's pretty much my same question. In my mockup, it looks like eval() is what I was looking for, but I need to put it into practice. Thanks! Commented Apr 29, 2013 at 15:19
  • @epascarello they're trying to do operations with it and then assign a value to an existing object. It is similar, but not a duplicate. Commented Apr 29, 2013 at 15:28
  • 2
    @EdwardD it is the same thing. alert(window[array][0]); There is about 50 dupes with the same question. I just picked one of them. Commented Apr 29, 2013 at 15:44

3 Answers 3

6

It's very simple.

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

Polluting the global namespace is strongly discouraged. I would strongly advise you to refrain from using the window object for this purpose. Read HERE for more details.

Sign up to request clarification or add additional context in comments.

2 Comments

I think this is similar to @pscoder's answer, but creates something other than window to use. Still seems awkward and complicated for my purposes, but maybe I'll come back to it.
@EdwardD: It's neither awkward nor complicated. It's just a simple object, and is the proper solution. You can shorten it to var obj = {arrayname: [1,2,3]}; Then access as obj[array][0];
2

Try using the window object to retrieve it if it is defined in the window context.

var array = window["arrayname"]

1 Comment

Unfortunately, Hyperion doesn't have a window or document I can call in their version of Javascript.
0

You can use

array = window['arrayname'];

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.