I have following code to calculate Stock value dynamic based on the previous calculated value
and also the only last value of element we have currentStock field which will be useful to calculate dynamic stock
this.stockList.map(function(product, index) {
product.Data.map(function(attribute, currentIndex) {
if (currentIndex == 0) {
attribute.stock = attribute.currentStock;
} else {
const requestVal = (attribute.qty * attribute.unit) + attribute.stock; // here i need to have a previous stock value
console.log("requestVal", attribute);
attribute.stock = requestVal;
}
});
});
my sample expected array :
[
{
Product: ABC
Data: [
{ "billDate": "1-apr-2016", "unit": 2, "Qty": 4, "Amount": 4500, "currentStock": 10 },
{ "billDate": "1-may-2016", "unit": 3, "Qty": 2, "Amount": 4500, "stock": (2 * 3) + 10 = 16 },
{ "billDate": "1-may-2016", "unit": 1, "Qty": 2, "Amount": 4500, "stock": (2 * 1) + 16 = 18 },
],
},
]
Observation/Suggestion :
attribute.Qty
instead of attribute.qty
product.Data[currentIndex - 1].stock
to get the previous object stock value.Try this :
const stockList = [
{
Product: 'ABC',
Data: [
{ "billDate": "1-apr-2016", "unit": 2, "Qty": 4, "Amount": 4500, "currentStock": 10 },
{ "billDate": "1-may-2016", "unit": 3, "Qty": 2, "Amount": 4500 },
{ "billDate": "1-may-2016", "unit": 1, "Qty": 2, "Amount": 4500 },
],
},
];
stockList.forEach(function(product, index) {
product.Data.forEach(function(attribute, currentIndex) {
if (currentIndex === 0) {
attribute.stock = attribute.currentStock;
} else {
const requestVal = (attribute.Qty * attribute.unit) + product.Data[currentIndex - 1].stock;
attribute.stock = requestVal;
}
});
});
console.log(stockList)