英文:
React problem with implementation (two items to one value)
问题
我尝试获得类似购物车的东西,所以值将按数量计算,我已经"修改"了类似这样的东西,但这不起作用:
我将从API响应开始:
"magazyn": [
{
"productId": 1,
"productGUID": "491a8965545a4071bda2811094cf55d1",
"productSKU": 10,
"productTitle": "aaaaaa",
"productCategory": "string",
"productDescription": "string",
"productQuantity": 1,
"productVatRate": 1,
"productNettoPurchasePrice": 1,
"productNettoSellingPrice": 1,
"productNettoSalesMargin": 1,
"productBruttoSellingPrice": 1,
"productNettoIncomeValue": 1,
"productVolume": "Szt"
},
{
"productId": 2,
"productGUID": "21a63a6a0ff84cb0b1b476284ffe7368",
"productSKU": 13,
"productTitle": "absddad",
"productCategory": "string",
"productDescription": "string",
"productQuantity": 2,
"productVatRate": 2,
"productNettoPurchasePrice": 2,
"productNettoSellingPrice": 2,
"productNettoSalesMargin": 2,
"productBruttoSellingPrice": 38,
"productNettoIncomeValue": 2,
"productVolume": "Szt"
}
],
"productId": [
{
"pcID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"productId": 1,
"productQuantity": 5
},
{
"pcID": "6b29fc40-ca47-1067-b31d-00dd010662da",
"productId": 2,
"productQuantity": 4
}
]
{item.productId.map(val => (
item.magazyn.map((item2) => item2.productBruttoSellingPrice).reduce((previousValue, currentValue2) => {
return previousValue + currentValue2 * val.productQuantity;
}, 0)
))}
我也尝试过以下代码:
{item.productId.map((val) => val.productQuantity).reduce((firstVal, nextVal) => {
item.magazyn.map((item2) => item2.productBruttoSellingPrice).reduce((previousValue, currentValue2) => {
return previousValue + currentValue2 * val;
}, 0)
},0)
)}
但第一个给出了奇怪的值,例如当结果是30时,这给了我3030,第二次尝试什么也没给出:P
我的问题是,magazyn给我产品价格,但"productId"对象给我一个数量,我想合并它们,就像当productId.productId == magazyn.productId时,productQuantity * productBruttoSellingPrice,并且这将在循环中进行,因为"productId"对象中有不同的项目。
英文:
Im trying to get something like cart, so the values will be counted times quantity, ive "modded" something like this, but this doesnt work:
I will start with the API response:
"magazyn": [
{
"productId": 1,
"productGUID": "491a8965545a4071bda2811094cf55d1",
"productSKU": 10,
"productTitle": "aaaaaa",
"productCategory": "string",
"productDescription": "string",
"productQuantity": 1,
"productVatRate": 1,
"productNettoPurchasePrice": 1,
"productNettoSellingPrice": 1,
"productNettoSalesMargin": 1,
"productBruttoSellingPrice": 1,
"productNettoIncomeValue": 1,
"productVolume": "Szt"
},
{
"productId": 2,
"productGUID": "21a63a6a0ff84cb0b1b476284ffe7368",
"productSKU": 13,
"productTitle": "absddad",
"productCategory": "string",
"productDescription": "string",
"productQuantity": 2,
"productVatRate": 2,
"productNettoPurchasePrice": 2,
"productNettoSellingPrice": 2,
"productNettoSalesMargin": 2,
"productBruttoSellingPrice": 38,
"productNettoIncomeValue": 2,
"productVolume": "Szt"
}
],
"productId": [
{
"pcID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"productId": 1,
"productQuantity": 5
},
{
"pcID": "6b29fc40-ca47-1067-b31d-00dd010662da",
"productId": 2,
"productQuantity": 4
}
]
{item.productId.map(val => (
item.magazyn.map((item2) => item2.productBruttoSellingPrice).reduce((previousValue, currentValue2) => {
return previousValue + currentValue2 * val.productQuantity;
}, 0)
))}
I also tried with
{item.productId.map((val) => val.productQuantity).reduce(firstVal, nextVal) => {
item.magazyn.map((item2) => item2.productBruttoSellingPrice).reduce((previousValue, currentValue2) => {
return previousValue + currentValue2 * val;
}, 0)
},0)
)}
But the first one gives weird values like, for example when the result is 30 this gives me 3030, the second attempt is gives nothing ![]()
my problem is that, the magazyn give me the product price, but the "productId" object gives me a quantity, i want to merge it like when productId.productId == magazyn.productId then productQuantity * productBruttoSellingPrice and this one will be in the loop because we have different items in "productId" object.
答案1
得分: 1
你能尝试一下以下内容吗?我会解释你的期望吗?
const magazyn = [...item.magazyn];
const productId = [...item.productId];
let sum = 0;
magazyn.forEach((value1) => {
productId.forEach((value2) => {
if (value1.productId === value2.productId){
sum= sum +
value1.productBruttoSellingPrice *
value2.productQuantity
}
});
});
console.log(sum);
英文:
Could you try the following? Do I interpret what you are expecting?
const magazyn = [...item.magazyn];
const productId = [...item.productId];
let sum = 0;
magazyn.forEach((value1) => {
productId.forEach((value2) => {
if (value1.productId === value2.productId){
sum= sum +
value1.productBruttoSellingPrice *
value2.productQuantity
}
});
});
console.log(sum);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论