Javascript 如何使用增量名称创建变量
我有一些问题需要了解如何做到这一点 我创建了一个用于保存对象的变量:Javascript 如何使用增量名称创建变量,javascript,variables,Javascript,Variables,我有一些问题需要了解如何做到这一点 我创建了一个用于保存对象的变量: var myobject = new object(); 一切都很好;名称为“我的对象”,内容为新对象 如果我想要10个变量,我需要输入10个变量名 var myobject1 = new object(); var myobject2 = new object(); var myobject3 = new object(); var myobject4 = new object(); .... and so on 现在;
var myobject = new object();
一切都很好;名称为“我的对象”,内容为新对象
如果我想要10个变量,我需要输入10个变量名
var myobject1 = new object();
var myobject2 = new object();
var myobject3 = new object();
var myobject4 = new object();
.... and so on
现在;我想用一个计数器增加变量的名称,而不是内容,所以我需要一个新对象多少次都无关紧要;名称将以增量方式更改。我不能对变量重复使用相同的名称,这是一个很长的过程。因此,结果将与上面相同,但我没有在n次变量名上实际写入10次
在sh中,我可以引用myobject作为名称,或者引用$myobject作为该变量的内容;但JS似乎没有这种方法
我试图放下逻辑,但我看不出变量名实际上是如何递增的:
//global variables
var counter=0;
var tempname;
function makeplentyofobj(){
if (temp name)
tempname= new object(); //this should make myobjectN
else
myobject= new object(); //this makes myobject1
counter ++;
tempname ='myobject'+counter; //this make a name for the next object)
}
当我运行它时,编译器将放入myobject,新对象计数器变为1,temp name包含字符串“myobject1”
如果我调用该函数2次,第二次我将使用counter=1,tempname将包含字符串“myobject1”。这就是我想用作下一个变量的名称。由于tempname不是空的,我在else条件下进行分支,但是tempname的内容将从string更改为object
相反,我希望获得一个新的变量名,它随计数器递增,因此每次调用var my object=new object时;作为计数器的增量,我得到
myobject1=new object();
myobject2= new object();
....
我怎样才能在JS中获得这个
编辑:
谢谢你的回复;它是复制品;虽然我的问题花了相当长的时间来解释我所做的事情,但另一个问题是我如何做到这一点
我的工作需要努力;我想下次我将跳过这项工作:解决这类问题的通常方法是将对象放入数组中。这简化了存储和检索它们
var objArray = [];
objArray.push(new object());
objArray.push(new object());
objArray.push(new object());
objArray.push(new object());
或者,您甚至可以将它们放在初始声明中:
var objArray = [new object(), new object(), new object(), new object()];
如果您真的只需要泛型对象,可以简单如下:
var objArray = [{}, {}, {}, {}, {}];
然后,引用一个给定的元素就像
var obj = objArray[n];
请记住,数组以索引0开始,就像在objArray[0]中一样。为什么不使用数组?不要使用这种方法。使用容器对象:可以是带索引的数组,也可以是带适当键的普通对象。我认为您需要了解数组的用途。@newbiez-只要您得到想要的答案,就不要担心它被标记为重复的。你应该先搜索,试图找到以前的问题,但是如果你没有找到,所以你发布了一个问题,而其他人知道有一个重复的问题,那就好了。这没问题。你问了一个问题,得到了一个解决问题的答案,这就是问题所在。objArray.push{}虽然它是对象而不是对象…@Derek朕會功夫 - 他们并不是在这里创建一个通用对象,而是一个大写字母的对象。我假设他们只是在这里使用伪代码;objarray[计数器]。推送新对象;也可以吗?@jfriend00-是的,我注意到了。是的,只是使用伪代码jfriend00;谢谢