Javascript 将对象数组合并到单个数组中

Javascript 将对象数组合并到单个数组中,javascript,arrays,oop,sorting,Javascript,Arrays,Oop,Sorting,我有一个巨大的嵌套对象数组,看起来像这样(再添加76个产品,这就描绘了一幅好画面): 我需要循环查看订单和订单详细信息,并将每个产品的订单合并到单个数组中。一个产品有多个订单,每个订单都有一个订单详细信息,因此我的理想输出如下所示: { "ProductID": 11, "ProductName": "Queso Cabrales", "SupplierID": 5, "CategoryID": 4, "Quan

我有一个巨大的嵌套对象数组,看起来像这样(再添加76个产品,这就描绘了一幅好画面):

我需要循环查看订单和订单详细信息,并将每个产品的订单合并到单个数组中。一个产品有多个订单,每个订单都有一个订单详细信息,因此我的理想输出如下所示:

  {
        "ProductID": 11,
        "ProductName": "Queso Cabrales",
        "SupplierID": 5,
        "CategoryID": 4,
        "QuantityPerUnit": "1 kg pkg.",
        "UnitPrice": 21,
        "UnitsInStock": 22,
        "UnitsOnOrder": 30,
        "ReorderLevel": 30,
        "Discontinued": false,
        "OrderID": [10248, 10296]
        "CustomerID":[ "VINET", "LILAS"]
        "EmployeeID":[ 5,  6]
        "OrderDate":[ "1996-07-04T05:[0:[0.000Z", "1996-09-03T05:00:00.000Z"]
        "RequiredDate":[ "1996-08-01T05:[0:[0.000Z", "1996-10-01T05:00:00.000Z"]
        "ShippedDate":[ "1996-07-16T05:[0:[0.000Z", "1996-09-11T05:00:00.000Z"]
        "ShipVia":[ 3, 1]
        "Freight":[ 32.38, 0.12]
        "ShipName":[ "Vins et alcools Chevalier", "LILA-Supermercado"]
        "ShipAddress":[ "59 rue de l'Abbaye", "Carrera 52 con Ave. Bolívar #65-98 Llano Largo"]
        "ShipCity":[ "Reims", "Barquisimeto"]
        "ShipRegion":[ null, "Lara"]
        "ShipPostalCode":[ "51100", "3508"]
        "ShipCountry":[ "France", "Venezuela"]
        "OrderID":[ 10248, 10296]
        "ProductID":[ 11, 11]
        "UnitPrice":[ 14, 16.8]
        "Quantity":[ 12, 12]
        "Discount":[ 0,  0]
}
var graph = {
    Spicy-Ramen: {[  
        [380.00, 12-March-2015], [420.62, 19-March-2015] 
    ]},
    Miso-Soup: {[
        [230.99, 12-April-2015], [322.60, 22-May-2015] 
    ]},
    Vegetable-Shumai: {[
        [22.99, 12-June-2015], [121.20, 29-August-2015]
    ]}
}
我最大的问题是:

  • 在每个orderID中嵌套访问order_详细信息
  • 维护一个产品到多个订单的关联(我成功地将所有产品合并到一个巨大的阵列中,它几乎打破了互联网)
我想把这个发送到客户端,用D3可视化。如果可以使用如下数据输入对堆叠面积图进行成像:

  {
        "ProductID": 11,
        "ProductName": "Queso Cabrales",
        "SupplierID": 5,
        "CategoryID": 4,
        "QuantityPerUnit": "1 kg pkg.",
        "UnitPrice": 21,
        "UnitsInStock": 22,
        "UnitsOnOrder": 30,
        "ReorderLevel": 30,
        "Discontinued": false,
        "OrderID": [10248, 10296]
        "CustomerID":[ "VINET", "LILAS"]
        "EmployeeID":[ 5,  6]
        "OrderDate":[ "1996-07-04T05:[0:[0.000Z", "1996-09-03T05:00:00.000Z"]
        "RequiredDate":[ "1996-08-01T05:[0:[0.000Z", "1996-10-01T05:00:00.000Z"]
        "ShippedDate":[ "1996-07-16T05:[0:[0.000Z", "1996-09-11T05:00:00.000Z"]
        "ShipVia":[ 3, 1]
        "Freight":[ 32.38, 0.12]
        "ShipName":[ "Vins et alcools Chevalier", "LILA-Supermercado"]
        "ShipAddress":[ "59 rue de l'Abbaye", "Carrera 52 con Ave. Bolívar #65-98 Llano Largo"]
        "ShipCity":[ "Reims", "Barquisimeto"]
        "ShipRegion":[ null, "Lara"]
        "ShipPostalCode":[ "51100", "3508"]
        "ShipCountry":[ "France", "Venezuela"]
        "OrderID":[ 10248, 10296]
        "ProductID":[ 11, 11]
        "UnitPrice":[ 14, 16.8]
        "Quantity":[ 12, 12]
        "Discount":[ 0,  0]
}
var graph = {
    Spicy-Ramen: {[  
        [380.00, 12-March-2015], [420.62, 19-March-2015] 
    ]},
    Miso-Soup: {[
        [230.99, 12-April-2015], [322.60, 22-May-2015] 
    ]},
    Vegetable-Shumai: {[
        [22.99, 12-June-2015], [121.20, 29-August-2015]
    ]}
}

我使用了u.merge和u.assign,但没有成功-如果支持或推动方向正确,我们将不胜感激。

我希望我做对了,因此我建议制作一些单独的对象,如产品订单,其中对象的每个键都是元素的id,因此,您的订单对象如下:

var Orders = {
    11:{"ProductID":11,"ProductName":...},
    12:{"ProductID":12,"ProductName":...},
}
因此,您可以通过其id轻松地访问订单参数


您可以对订单详细信息执行相同的操作,但我看不出有任何理由不将其属性包含到订单对象中。

有趣的方法,我没有想过这样做。我最初的想法是创建一个单独的表数组,每个产品拥有其中一个表,以及该表中产品拥有的订单和订单详细信息数组。我感谢您的输入。但是,我可能会对我的方法感到失望,并尝试您的方法-我会让您不断更新!