在我的情况下如何将对象推入数组?

时间:2015-03-26 17:18:20

标签: javascript arrays object

我正在尝试将对象推送到数组中。

我有类似

的东西
  var productCatogory = obj.data; //obj is http request data
  var productStatus   = obj.status;

  var productObj = [productCatogory, productStatus];


  for (var id in currentProducts) {
      if(productObj[0] == id) {                
          productObj[0].push({'id': id, 'name': currentProducts[id]});
      } else {                
          productObj[1].push({'id': id, 'name': currentProducts[id]});
      }
  }

我想要的结果:

  productObj = [ productObj[0][{'id': id, 'name': currentProducts[id]}, 
                               {'id': id, 'name': currentProducts[id]}, 
                               {'id': id, 'name': currentProducts[id]}                                      
                              ],
                 prodcutObj[1][{'id': id, 'name': currentProducts[id]}.
                               {'id': id, 'name': currentProducts[id]}, 
                               {'id': id, 'name': currentProducts[id]},                                     
                              ]
  ]

以上代码将具有undefined不是函数错误,因为productObj[0]不是数组。我该如何解决这个问题?非常感谢!

1 个答案:

答案 0 :(得分:1)

productObj已经是一个对象数组。如果您想在其上添加/更新属性,只需直接访问该属性:

for (var id in currentProducts) {
    if(productObj[0].id == id) {                
        productObj[0].id = id;
        productObj[0].name = currentProducts[id];
    } else {                
        productObj[1].id = id;
        productObj[1].name = currentProducts[id];
    }
}

现在,如果你想替换当前对象,那么你可以设置整个对象:

productObj[0] = {'id': id, 'name': currentProducts[id]};

<强>更新

为了获得您想要的结果,您可以尝试在对象中创建一个属性来保存新数组:

productObj[0].objects = [];
productObj[1].objects = [];

for (var id in currentProducts) {
    if(productObj[0] == id) {                
        productObj[0].objects.push({'id': id, 'name': currentProducts[id]});
    } else {                
        productObj[1].objects.push({'id': id, 'name': currentProducts[id]});
    }
}

更新2:

它有效here in this Fiddle