gpt4 book ai didi

javascript - 清理代码的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 10:19:40 27 4
gpt4 key购买 nike

我有一个简单的功能,必须进行更改。有点像自动售货机。它需要 2 个参数:物品的价格和收到的钞票和硬币数组。输出必须是仅在 [quarter, dime, nickel, penny] 中的数字数组格式。例如,项目成本 3.29收到的金额是[1,1,2] .在这种情况下,输出必须是 [2,2,0,1]因为变化是0.71可分为 2 分、2 Angular 、0 镍和 1 便士。如果收到的金额小于价格,则必须返回全部金额,但只能以上述格式返回。例如,如果价格是 5但支付的金额是 [2,2] ,输出必须是 [16,0,0,0] .我创建了这个函数:

`function change(price,paid) {
const totalPaidVal = paid.reduce((a,b)=>a+b,0)
if (totalPaidVal === price) {
return(Array(4).fill(0))
} else if (price > totalPaidVal) {
const qNum = Math.floor(totalPaidVal/0.25);
const dNum = Math.floor((totalPaidVal-(qNum*0.25))/0.1);
const nNum = Math.floor((totalPaidVal-(qNum*0.25)-(dNum*0.1))/0.05);
const pNum = Math.round((totalPaidVal-(qNum*0.25)-(dNum*0.1)-(nNum*0.05))/0.01);
const arr = [qNum,dNum,nNum,pNum];
return arr;
} else if(price<totalPaidVal) {
const change = totalPaidVal-price;
const qNum = Math.floor(change/0.25);
const dNum = Math.floor((change-(qNum*0.25))/0.1);
const nNum = Math.floor((change-(qNum*0.25)-(dNum*0.1))/0.05);
const pNum = Math.round((change-(qNum*0.25)-(dNum*0.1)-(nNum*0.05))/0.01);
const arr = [qNum,dNum,nNum,pNum];
return arr;
}
}`

它工作正常,但我知道看起来我又重复了一遍什么不好。我一直在尝试创建其他变量来清理它,但它看起来仍然很奇怪。必须有更有效的方法来做到这一点,而无需一直重复相同的代码片段。那么,问题来了:清理它并使它看起来比现在更简单的最佳方法是什么?

最佳答案

您可以使用函数从代码中删除重复性。

function getNums(value){
const qNum = Math.floor(value/0.25);
const dNum = Math.floor((value-(qNum*0.25))/0.1);
const nNum = Math.floor((value-(qNum*0.25)-(dNum*0.1))/0.05);
const pNum = Math.round((value-(qNum*0.25)-(dNum*0.1)-(nNum*0.05))/0.01);
return [qNum,dNum,nNum,pNum];
}

根据条件调用此函数
if (price > totalPaidVal) {
return getNums(totalPaidVal)
} else if(price < totalPaidVal){
return getNums(totalPaidVal - price)
}

关于javascript - 清理代码的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60917529/

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