我已创建的阵列使用阵列的内容的变量名,如何创建使用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]=[];
}
尝试,但它不工作...
请帮助。
我已创建的阵列使用阵列的内容的变量名,如何创建使用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]=[];
}
尝试,但它不工作...
请帮助。
您可以创建一个主父对象,并将该数组值作为关键字使用,以便为每个对象存储数组。
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];
如果你真的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]] = [];
}
您不能访问本地变量对象(除全局代码),所以你不能比的变量声明添加其他属性。对于在全球范围内的全局代码,你可以这样做:
var global = this;
for (...) {
global[myBuildingName[i]] = []
}
,但你不能这样做,在功能方面的功能代码。查看jfriend00的答案。
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'],...
你已经收到了很多伟大的答案,如果他们中的一个成为你的需要,你应该接受这个答案。事实证明,这仍然是开放的,这让我们认为没有人能以你所希望的方式回答你的问题。
如果是这样,我只能假设你想在全局范围内使用这些变量。
var myBuildingName=['A1','A2','A3','A4'];
for (var i = 0; i < myBuildingName.length; i++) {
window[myBuildingName[i]] = [];
}
现在,您可以通常访问您的变量。
A1.push('test');
注:这是可怕的做法,因为你永远不应该影响全局空间。
Thnx for the help .... – Sudeep 2012-05-02 09:56:46
'var myBuildingName [i] = [myBuildingName [i]];' – 2012-04-27 06:41:42