'Calculate previous element as input to next element of array in JS?
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 },
],
},
]
Solution 1:[1]
Observation/Suggestion :
- It should be
attribute.Qtyinstead ofattribute.qty - In second iteration, You can use
product.Data[currentIndex - 1].stockto 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)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Rohìt JÃndal |
