У меня есть оператор if, который отлично работает, однако он стал немного длинным, и мне нужна помощь, чтобы понять, как я могу уменьшить количество строк кода и, следовательно, удобочитаемость.
у меня есть defaultMonth
и набор months
и соответствующий price
. Мне нужно добавить или снизить цену в зависимости от defaultMonth
и month
выбирается пользователем.
Вот несколько примеров нужных мне результатов (обратите внимание, что интервал такой же):
Если по умолчанию месяц 60 — установите цену соответственно:
Month - Price
60 0.0
48 0.1
36 0.2
24 0.35
12 0.5
Если по умолчанию месяц 48 — установите цену соответственно:
Month - Price
60 -0.1
48 0.0
36 0.1
24 0.25
12 0.4
Если по умолчанию месяц 36 — установите цену соответственно:
Month - Price
60 -0.2
48 -0.1
36 0.0
24 0.15
12 0.3
Я построил его сейчас с помощью оператора if для каждого месяца по умолчанию и вложенных if для каждого месяца.
if (defaultMonth === 60) {
if (month === 60) {
this.price += 0.0
}
if (month === 48) {
this.price += 0.1
}
if (month === 36) {
this.price += 0.2
}
if (month === 24) {
this.price += 0.35
}
if (month === 12) {
this.price += 0.5
}
}
if (defaultMonth === 48) {
if (month === 60) {
this.price -= 0.1
}
if (month === 48) {
this.price += 0.0
}
if (month === 36) {
this.price += 0.1
}
if (month === 24) {
this.price += 0.25
}
if (month === 12) {
this.price += 0.4
}
}
if (defaultMonth === 36) {
if (month === 60) {
this.price -= 0.2
}
if (month === 48) {
this.price -= 0.1
}
if (month === 36) {
this.price += 0.0
}
if (month === 24) {
this.price += 0.15
}
if (month === 12) {
this.price += 0.3
}
}
if (defaultMonth === 24) {
if (month === 60) {
this.price -= 0.35
}
if (month === 48) {
this.price -= 0.25
}
if (month === 36) {
this.price -= 0.15
}
if (month === 24) {
this.price += 0.0
}
if (month === 12) {
this.price += 0.15
}
}
if (defaultMonth === 12) {
if (month === 60) {
this.price -= 0.5
}
if (month === 48) {
this.price -= 0.4
}
if (month === 36) {
this.price -= 0.3
}
if (month === 24) {
this.price -= 0.15
}
if (month === 12) {
this.price += 0.0
}
}
1 ответ
Если бы я делал это, я бы начал с помещения данных в двумерный массив. В качестве необработанных данных это выглядит примерно так:
по умолчанию | 12 | 24 | 36 | 48 | 60 |
---|---|---|---|---|---|
36 | -0,2 | -0,1 | 0,0 | 0,15 | 0,3 |
48 | -0,1 | 0,0 | 0,1 | 0,25 | 0,4 |
60 | 0,0 | 0,1 | 0,2 | 0,35 | 0,5 |
Я не очень много использую JavaScript, но думаю, что в синтаксисе JavaScript это работает в таком общем порядке:
var priceTable = {
"36": { "12": -0.2, "24": -0.1, "36": 0.0, "48": 0.15, "60": 0.3 },
"48": { "12": -0.1, "24": 0.0, "36": 0.1, "48": 0.25, "60": 0.4 },
"60": { "12": 0.0, "24": 0.1, "36": 0.2, "48": 0.35, "60": 0.5 }
};
this.price += priceTable[defaultMonth][month];