在JS中创建一个对象

时间:2015-10-15 15:45:48

标签: javascript object javascript-objects

我有一个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
              }
}

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

2 个答案:

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