在 JS 中创建一个对象

Creating an object in JS

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

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

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

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
}