Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在创建时递增javascript对象名称?_Javascript_Jquery - Fatal编程技术网

在创建时递增javascript对象名称?

在创建时递增javascript对象名称?,javascript,jquery,Javascript,Jquery,我正在创建3个具有相同名称和选项的对象,但它们可以有不同的值。这些对象是根据用户的输入动态创建的,因此我无法对它们进行不同的命名,因为我试图根据它们的计数或增量值引用它们 我现在的问题是,我同时创建了3个对象,与此类似: var contentformat = { name:"Test Title 1", description:"A 5 minute video", icon: ""

我正在创建3个具有相同名称和选项的对象,但它们可以有不同的值。这些对象是根据用户的输入动态创建的,因此我无法对它们进行不同的命名,因为我试图根据它们的计数或增量值引用它们

我现在的问题是,我同时创建了3个对象,与此类似:

var contentformat = { name:"Test Title 1", 
                      description:"A 5 minute video",
                      icon: ""
                    };

var contentformat = { name:"Test Title 2", 
                      description:"A 3 minute video",
                      icon: ""
                    };

var contentformat = { name:"Test Title 3", 
                      description:"A 10 minute video",
                      icon: ""
                    };

但是如果我在控制台中检查它们,它只显示“testtitle3”对象。有没有办法让这些多个对象(或在创建时增加它们?

一个变量一次只能保存一个值。因此,存储的唯一对象是分配给
contentformat
的第三个也是最后一个对象。尝试改用数组

var sample = new Array();
sample [0] = { name:"Test Title 1", 
                  description:"A 5 minute video",
                  icon:""};
sample [1] = { name:"Test Title 2", 
                  description:"A 3 minute video",
                  icon:""};
sample [2] = { name:"Test Title 3", 
                  description:"A 10 minute video",
                  icon:""};
编辑:看起来OP提到对象是在不同的地方创建的。这是一个完美的使用场所

var contentformat=[]
//添加单个项目
contentformat.push({
名称:“测试标题1”,
描述:“一段5分钟的视频”,
图标:“
})
//一次添加多个项目
contentformat.push({
名称:“测试标题2”,
描述:“一段3分钟的视频”,
图标:“
}, {
名称:“测试标题3”,
描述:“一段10分钟的视频”,
图标:“
})
//把三件东西都拿回来!

console.log(contentformat)
您可以创建一个函数,为您创建一个依赖于全局计数器的对象,如下所示:

var计数器=0;//计数器(必须在函数外部且必须初始化)
函数创建者(desc,icon){//获取描述和图标并返回一个对象
计数器+++;//递增计数器
返回{
名称:“测试标题”+计数器,
描述:描述,
图标:图标
};
}
log(creator(“some desc”,“some desc”);
log(creator(“someotherdesc”,”);
log(creator(“又一个desc”,“icoon”));

//…
您对这三个变量使用相同的变量名,因此它将用新值替换先前的值,这就是为什么您只看到最后一个值的原因

您应该改用数组

var sample = new Array();
sample [0] = { name:"Test Title 1", 
                  description:"A 5 minute video",
                  icon:""};
sample [1] = { name:"Test Title 2", 
                  description:"A 3 minute video",
                  icon:""};
sample [2] = { name:"Test Title 3", 
                  description:"A 10 minute video",
                  icon:""};
然后,您可以使用索引访问数组的元素,如下所示

 var video1 = sample [0];

这将解决您的问题

他们不能进入数组有什么原因吗?你声明了同一个变量三次,所以你只得到最后一个值。如上所述,使用数组和
.push()
将对象放入其中。它们是在3个不同的位置创建的,所以我不确定如何创建,但我不认为将它们放入其中会有问题,所以我尝试了数组方法,但由于每个对象基本上都是在自己的文件上构建的,然后合并到一个主数组中,我的数组每次都显示为空。让它与.push()一起工作,但它只存储第三个,我想它会在每个文件上重写我的数组。“构建在它们自己的文件上,然后合并到一个主文件”——你能澄清一下吗?您是否在浏览器中,在单独的HTML页面上工作?如果您想在客户端长期存储数据,您可能需要查看HTML5
localStorage
。因此,这是一种奇怪的设置,但我使用的是我的公司创建的cos系统来构建模板。我将让用户创建模块,其中每个单独的文件都是一个自定义模块,其中包含帮助构建类的代码。所以在这些文件中,我得到了一个名称和描述,我想引用到一个JS对象中,这样我以后可以引用这3个文件中的任何一个。我无法将它们的名称设置为object1、2等,因为我需要它具有可伸缩性,所以file1可能并不总是file1,等等。您是否正在运行Node.js?您可能想看看如何使用现有的模块系统,如。它是用node构建的,但我正在使用的那一面并没有直接利用它。也许这个解释可以对这个问题有更多的解释:因此,基本上,当文件合并到主html文件时,每个模块都是用常规html创建的,我运行一个函数来计算它们的数量,并向它们添加一个id+x。因此,我现在有3个相同的模块,ID分别为
tab1、tab2、tab3
,允许我单独访问它们。有没有办法利用它来创建阵列?