JS перестройка записей в цикле

У меня есть вот такой массив с объектами

[
  {
    id: 196,
    title: 'Title1',
    price: '470.25',
    order_id: 12
  },
  {
    id: 174,
    title: 'Title2',
    price: '470.25',
    order_id: 12
  },
  {
    id: 175,
    title: 'Title3',
    price: '470.25',
    order_id: 13
  }
  ]

Вот мой код

for (let i = 0; i < allRowsFromAllUserOrders.length; i++) {

              allUserOrders[allRowsFromAllUserOrders[i]["order_id"]] = [
                {
                  title: allRowsFromAllUserOrders[i]["title"],
                  quantity: allRowsFromAllUserOrders[i]["quantity"],
                  product_id: allRowsFromAllUserOrders[i]["product_id"]
                }
              ];
            }

Он выстравает масив вот так, ключи идут по порядку 12, 13, 14, 15. Один ключ на запись.

"data": {
        "12": [
            {
                "title": "Title1",
                "quantity": 5,
                "product_id": 196
            }
        ],
        "13": [
            {
                "title": "Title1",
                "quantity": 5,
                "product_id": 174
            }
        ],
        "14": [
            {
                "title": "Title1",
                "quantity": 5,
                "product_id": 175
            }
        ],

А нужно,чтобы ключи брались из order_id. И Если есть две записи для order_id, то оба объекта были внутри элемента массива с ключем 12, а именно?

"data": {
        "12": [
            {
                "title": "Title1",
                "quantity": 5,
                "product_id": 196
            },
            {
                "title": "Title2",
                "quantity": 5,
                "product_id": 174
            }
        ],
        "14": [
            {
                "title": "Title3",
                "quantity": 5,
                "product_id": 175
            }
        ]

    Как такое сделать?

Ответы (2 шт):

Автор решения: OPTIMUS PRIME
for (let i = 0; i < allRowsFromAllUserOrders.length; i++) {
  let order = allRowsFromAllUserOrders[i];
  if( !allUserOrders[ order.order_id ] ) allUserOrders[ order.order_id ] = [];
  // Если массива с таким id нет - создать его.      


  allUserOrders[ order.order_id ].push(
    {
      title: order.title,
      quantity: order.quantity,
      product_id: order.product_id
    }
  ); // И уже не присваивать объект, а добавлять в массив.
}

P.s. в мелких скобках кода можно создавать локальные переменные покороче, чтобы не повторять переменные из предложений) А ["Скобочную нотацию"] используют, когда ключ состоит из пробелов, спец символов или переменных. Если это обычная строка - легче через .точку

→ Ссылка
Автор решения: Qwertiy
(allUserOrders[allRowsFromAllUserOrders[i].order_id] = allUserOrders[allRowsFromAllUserOrders[i].order_id] || []).push(твойОбъект)
→ Ссылка