[英]Setting dynamically an Object in JavaScript
对我来说似乎很复杂。 首先,我有以下列表:
liste_path_categories.push(
{ index: null
, letter: "letter1"
, type: key
, picture_url: "url1"
, id_categ: null
, response: "Answer here"
});
我想要的是从这个大列表中提取以下形式的对象:
data["String1"]["String2"]= String3
与:
String1=list_path_categories[i].letter
String2=list_path_categories[i].id_categ
String3=list_path_categories[i].response
例:
data['A']['12'] : "A_answer"
要声明数据,我这样做:
var data = new Object(new Object);
如何设置数据中的所有值?
您的问题很模糊,但是您的意思是这样吗? 在一个对象中设置动态属性属于另一个对象?
data['A']['12'].answer = "A_answer"
不必使用字符串,而必须在属性访问中使用变量:
var data = {};
if (!data[String1]) {
data[String1] = {}; // make sure that data[String1] exists and is an object
}
data[String1][String2] = String3;
如果要对数组中的元素执行此操作,则必须遍历array 。
PS:我建议使用比StringX
更多的表达性变量名称。
首先创建构造函数(使用OOP术语):
var ctor_object = function(letter,id_categ,response)
{
this.letter = letter;
this.id_cated = id_categ;
this.response = response;
}
(一般而言,您应该省略ctor_语法,并直接在对象类的名称之后对其进行命名)
然后在类别列表中使用构造函数:
var length = liste_path_categories.length,
element = null;
for (var i = 0; i < length; i++)
{
element = liste_path_categories[i];
my_obj = new ctor_object(element.letter,element.id_categ,element.reponse)
// Do something with my_obj
}
您可以使用Array.forEach方法遍历liste_path_categories并构造您的数据对象。
例:
var liste_path_categories = [];
var data = {};
liste_path_categories.push(...);
...
liste_path_categories.push(...);
liste_path_categories.forEach(function(element) {
data[element.letter] = {};
data[element.letter][element.id_categ] = element.response;
});
jsFiddle示例: http : //jsfiddle.net/3ZvNf/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.