Javascriptを使用してGoogleシート用のカスタム関数を作成していますが、基本的にテーブルに基づいて値を返す必要があります。Javascriptルックアップ関数の最適化
私は動作するものがありますが、ネストされたif文では非常に醜いと感じています。読みやすさのためにこれをどのように改善できますか?
function price(msrp, order_quantity)
{
var percentage;
if(order_quantity >= 200 && order_quantity <= 400) {
if(msrp >=49 && msrp <= 99) {
percentage = 0.07;
} else if (msrp >=100 && msrp <= 249) {
percentage = 0.06;
} else if (msrp >=250 && msrp <= 499) {
percentage = 0.05;
} else if (msrp >=500) {
percentage = 0.04;
} else {
return null;
}
} else if (order_quantity >= 500 && order_quantity <= 900) {
if(msrp >=49 && msrp <= 99) {
percentage = 0.06;
} else if (msrp >=100 && msrp <= 249) {
percentage = 0.05;
} else if (msrp >=250 && msrp <= 499) {
percentage = 0.04;
} else if (msrp >=500) {
percentage = 0.03;
} else {
return null;
}
} else if (order_quantity >= 1000 && order_quantity <= 1400) {
if(msrp >=49 && msrp <= 99) {
percentage = 0.07;
} else if (msrp >=100 && msrp <= 249) {
percentage = 0.06;
} else if (msrp >=250 && msrp <= 499) {
percentage = 0.05;
} else if (msrp >=500) {
percentage = 0.04;
} else {
return null;
}
} else if (order_quantity >= 1500) {
if(msrp >=49 && msrp <= 99) {
percentage = 0.04;
} else if (msrp >=100 && msrp <= 249) {
percentage = 0.03;
} else if (msrp >=250 && msrp <= 499) {
percentage = 0.025;
} else if (msrp >=500) {
percentage = 0.015;
} else {
return null;
}
} else {
return null;
}
return msrp * percentage;
}
は、401 ... 499と901 ... 999と1401 ... 1499の数量にギャップがあると奇妙に思えます。物事は少し複雑になりますが、あまり大きくはありません –