2012-04-27 69 views
0

我已创建的阵列使用阵列的内容的变量名,如何创建使用JavaScript

var myBuildingName=['A1','A2','A3','A4']; 

其中,A1,A2,A3和A4是通过用户输入获得的名称。 我现在想创建名称为A1,A2,A3和A4的数组。

我一直在使用

for(var i=0;i<myBuildingName.length;i++) 
{ 
    var myBuildingName[i]=[]; 
} 

尝试,但它不工作...

请帮助。

+0

'var myBuildingName [i] = [myBuildingName [i]];' – 2012-04-27 06:41:42

回答

1

您可以创建一个主父对象,并将该数组值作为关键字使用,以便为每个对象存储数组。

var myBuildingName=['A1','A2','A3','A4']; 

var master = {}; 

for (var i = 0; i < myBuildingName.length; i++) { 
    master[myBuildingName[i]] = []; 
} 

然后,您可以访问诸如数据:

var a1Array = master['A1']; 

var firstA1Item = master['A1'][0]; 
0

如果你真的wanto创建这些名字的变量(我不会推荐),你他们必须eval()他们。所以:

for(var i=0;i<myBuildingName.length;i++) 
{ 
    eval("var " + myBuildingName[i] + " = [] "); // This creates Array variables called A1, A2 etc. 
} 

同样,不推荐上述方法。您应该分配名称作为关键对象文本,如:

var myStuff = {}; 
for(var i=0;i<myBuildingName.length;i++) 
{ 
    var myStuff[myBuildingName[i]] = []; 
} 
0

您不能访问本地变量对象(除全局代码),所以你不能比的变量声明添加其他属性。对于在全球范围内的全局代码,你可以这样做:

var global = this; 
for (...) { 
    global[myBuildingName[i]] = [] 
} 

,但你不能这样做,在功能方面的功能代码。查看jfriend00的答案。

0

Here's a demo

var myBuildingName = ['A1', 'A2', 'A3', 'A4']; 

function arrayFromNames(arr) { 
    var store = {};       //storage for the arrays 
    for (var i = 0; i < arr.length; i++) { //for each in the passed names 
     store[arr[i]] = [];     //add to the storage an array with the corresponding name 
    } 
    return store;       //return the storage 
} 

var nameArrays = arrayFromNames(myBuildingName); //build using your array 

console.log(nameArrays);​ 

//you now have: 
//nameArrays.A1, nameArrays.A2,... 
//or 
//nameArrays['A1'], nameArrays['A2'],... 
0

你已经收到了很多伟大的答案,如果他们中的一个成为你的需要,你应该接受这个答案。事实证明,这仍然是开放的,这让我们认为没有人能以你所希望的方式回答你的问题。

如果是这样,我只能假设你想在全局范围内使用这些变量。

var myBuildingName=['A1','A2','A3','A4']; 

for (var i = 0; i < myBuildingName.length; i++) { 
    window[myBuildingName[i]] = []; 
} 

现在,您可以通常访问您的变量。

A1.push('test'); 

注:这是可怕的做法,因为你永远不应该影响全局空间。

+0

Thnx for the help .... – Sudeep 2012-05-02 09:56:46