crear objetos anidados en javascript como groupby en C #

<code>IList<Customer> Customers =
            flat.GroupBy(cust => new { cust.ReferenceNumber, cust.Name, cust.Address })
                .Select(c => new Customer()
                {
                    ReferenceNumber = c.Key.ReferenceNumber,
                    Name = c.Key.Name,
                    Address = c.Key.Address,
                    Orders = c.Select(o => new Order()
                    {
                        OrderId = o.OrderId,
                        ProductName = o.ProductName,
                        Description = o.Description,
                        Amount = o.Amount
                    }).ToList()
                }).ToList()
</code>

¿Es posible tomar una lista plana y convertirla en un objeto anidado en Javascript? Una solución genérica que es ??

Respuestas a la pregunta(2)

Su respuesta a la pregunta