2015-10-15 70 views
-1

我有一个for循环,它基本上遍历了一个类别列表。每个类别(字符串)有4个不同的项目,可以是真或假。下面是我的代码片段:在JS中创建对象

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 
       } 
} 

谁能告诉我什么,我做错了什么?

+1

'类别+ = {category:items};'真的吗?我建议使用'categories'作为_array_,然后使用'push'来添加数组中的对象。 'var categories = [];''''''''''''''''''使用'categories.push({category:items});' – Tushar

+0

@Tushar - 我是JS的新手,所以如果你能给我一个很棒的例子 – user1809790

+0

@ user1809790在他的评论中有一个例子。 – Mathletics

回答

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 
} 
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};