gpt4 book ai didi

javascript - 计算State数量——重构

转载 作者:行者123 更新时间:2023-12-03 00:32:28 28 4
gpt4 key购买 nike

我实现了一个逻辑来通过data变量计算剩余数量和成本。它循环遍历每个产品,并通过计算已返回数量状态的数量来计算剩余数量,并减去产品数量。

有没有办法重构这段代码,使其看起来更干净、易于理解/可维护?我不喜欢我必须这样做: obj[productItem.ProductId] ,它看起来有点难看。

const data = {Products: [{ProductId: 123,Qty: 5,Price: 50,State: [{Name: "Returned",Qty: 1},{Name: "Returned",Qty: 3}]},{ProductId: 123,Qty: 2,Price: 20,State:[{Name: "Returned",Qty: 1}]}]};


function getRemainingQty(order) {
return order.Products.reduce((obj, productItem) => {
let productStates = [];

if (productItem.State) {
productStates = productItem.State;
}

let returnedQty = productStates.reduce((quantity, productState) => {
return productState.Name === "Returned" ? quantity + productState.Qty : quantity;
}, 0);

let returnRemainingQty = productItem.Qty - returnedQty;
let returnAmountCost = productItem.Price / productItem.Qty * returnRemainingQty;

if (obj[productItem.ProductId]) {
obj[productItem.ProductId].QtyRemaining += returnRemainingQty;
obj[productItem.ProductId].ReturnCostRemaining += returnAmountCost;
} else {
obj[productItem.ProductId] = {
QtyRemaining: returnRemainingQty,
ReturnCostRemaining: returnAmountCost
};
}

return obj;
}, {});
}


console.log(getRemainingQty(data));

最佳答案

这里有一些想法,使用解构、 bool ||过滤器、...:

const data = {Products: [{ProductId: 123,Qty: 5,Price: 50,State: [{Name: "Returned",Qty: 1},{Name: "Returned",Qty: 3}]},{ProductId: 123,Qty: 2,Price: 20,State:[{Name: "Returned",Qty: 1}]}]};

function getRemainingQty(order) {
return order.Products.reduce((obj, { ProductId, Qty, Price, State } ) => {
const returnedQty = (State || [])
.filter(({ Name }) => Name === "Returned")
.reduce((quantity, { Qty }) => quantity + Qty, 0);
const productStock = obj[ProductId] || (obj[ProductId] = {
QtyRemaining: 0,
ReturnCostRemaining: 0
});
const returnRemainingQty = Qty - returnedQty;
productStock.QtyRemaining += returnRemainingQty;
productStock.ReturnCostRemaining += Price / Qty * returnRemainingQty;
return obj;
}, {});
}

console.log(getRemainingQty(data));

关于javascript - 计算State数量——重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com