我有一个for循环,基本上是通过一个类别列表。每个类别(字符串)有4个不同的项,可以是true或false。以下是我的代码片段:
var i,
category,
items,
categories= {};
for (i = 0; i < categories.length; i++) {
category = categories[i];
items = {};
items.first = availableItems[i][0] == true;
items.second = availableItems[i][1] == true;
items.third = availableItems[i][2] == true;
items.fourth = availableItems[i][3] == true;
categories+= { category : items};
}
我最终想要的是一个类别对象结构,如下所示:
{ category1 : {
first : true,
second : true,
third : false,
fourth : true
},
category2 : {
first : true,
second : true,
third : false,
fourth : false
},
category3 : {
first : true,
second : true,
third : false,
fourth : false
}
}
谁能告诉我我做错了什么?
答案 0 :(得分:1)
var category = new Object;
for (i = 0; i < 2; i++) {
category['category' + (i).toString()] = (function() {
var obj = {};
obj.first = true == true;
obj.second = false == true;
return obj;
})();
};
您的代码无效,因为1)您cannot get the lenght of an object with the .length property,因此categories.length
无法正常工作。 2)要向对象添加成员,可以使用括号表示法:
object['member'] = 'string value';
或点符号:
object.member = 'string value';
但不是这样:categories+= { category : items};
答案 1 :(得分:1)
var result;
for(var i=0;i<availableItems.length;i++){
var index = i+1;
result["category"+index]["first"] = availableItems[i][0] == true
result["category"+index]["second"] = availableItems[i][1] == true
result["category"+index]["third"] = availableItems[i][2] == true
result["category"+index]["fourth"] = availableItems[i][3] == true
}