在我的例子中,如何将对象推入数组

How to push an object into array in my case?

本文关键字:对象 数组 我的      更新时间:2023-09-26

我正试图将一个对象推入数组。

我有类似的东西

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

上面的代码将有未定义的。这不是一个函数错误,因为productObj[0]不是一个数组。我该如何解决此问题?非常感谢!

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:

它在这个Fiddle中工作。