У меня есть небольшая проблема со следующим: у меня есть инвентарный массив объектов, где каждый объект представляет собой один и тот же продукт, приобретенный в разное время и по разной стоимости. После продажи я хочу получить среднюю стоимость, основанную на проданных единицах, а затем вернуть обновленный массив объектов (или новый) с обновленным значением этих свойств (в этом случае уменьшающееся количество, пока оно не достигнет 0 и переходя к следующему объекту).
Например, a иметь следующий массив объектов инвентаря:
"shirts": [
{
"purchase_id": "vsibh",
"dateOfPurchase": "17/04/2020, 22:44",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 50,
"quantity": 400,
"total": 20000
},
{
"purchase_id": "wLqV2",
"dateOfPurchase": "18/04/2020, 12:22",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 40,
"quantity": 250,
"total": 10000
},
{
"purchase_id": "tCyyT",
"dateOfPurchase": "20/04/2020, 21:17",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 35,
"quantity": 600,
"total": 21000
}
]
Если я продам 900 единиц, я хочу получить среднюю стоимость для каждой рубашки продано, что в этом случае будет 43,06 ((400 * 50 + 250 * 40 + 250 * 35) / 900) и вернуть обновленный массив с уменьшенными количествами, который выглядит следующим образом:
"shirts": [
{
"purchase_id": "vsibh",
"dateOfPurchase": "17/04/2020, 22:44",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 50,
"quantity": 0,
"total": 0
},
{
"purchase_id": "wLqV2",
"dateOfPurchase": "18/04/2020, 12:22",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 40,
"quantity": 0,
"total": 0
},
{
"purchase_id": "tCyyT",
"dateOfPurchase": "20/04/2020, 21:17",
"provider": "Adidas",
"product": "Shirt",
"sku": "2390",
"cost": 35,
"quantity": 350,
"total": 12250
}
]
Объекты массива уже упорядочены по дате. Я думал, что эту проблему будет довольно просто решить, но я застрял в течение нескольких дней, пытаясь понять это. Любая помощь будет оценена.