if (floors.value == 1) {
if (area.value <= 120) {
a1 = 1.26;
} else {
a1 = 1;
}
if (area.value >= 120.001 && area.value <= 140) {
a2 = 1.24;
} else {
a2 = 1;
}
if (area.value >= 140.001 && area.value <= 160) {
a3 = 1.23;
} else {
a3 = 1;
}
if (area.value >= 160.001 && area.value <= 200) {
a4 = 1.22;
} else {
a4 = 1;
}
if (area.value >= 200.001 && area.value <= 260) {
a5 = 1.2;
} else {
a5 = 1;
}
if (area.value >= 260.001 && area.value <= 300) {
a6 = 1.19;
} else {
a6 = 1;
}
aF = a1*a2*a3*a4*a5*a6;
console.log(aF);
} else if (floors.value == 2 || floors.value == 3) {
if (area.value >= 100 && area.value <= 130) {
b1 = 1.3;
} else {
b1 = 1;
}
if (area.value >= 130.001 && area.value <= 160) {
b2 = 1.27;
} else {
b2 = 1;
}
if (area.value >= 160.001 && area.value <= 200) {
b3 = 1.24;
} else {
b3 = 1;
}
if (area.value >= 200.001 && area.value <= 300) {
b4 = 1.22;
} else {
b4 = 1;
}
bF = b1*b2*b3*b4;
console.log(bF);
}
120
и 120.001
, условия не определены и код даст ошибку, т.к. не определится одна из переменных.else if
. Поскольку они перемножаются и по умолчанию единицы, можно сразу определять конечное значение:if (floors.value == 1) {
aF = 1; // по умолчанию, для больше 300
if (area.value <= 120) aF = 1.26;
else if (area.value <= 140) aF = 1.24;
else if (area.value <= 160) aF = 1.23;
else if (area.value <= 200) aF = 1.22;
else if (area.value <= 260) aF = 1.2;
else if (area.value <= 300) aF = 1.19;
console.log(aF);
} else if (floors.value == 2 || floors.value == 3) {
bF = 1; // ? для меньше 100 .. и больше 300
if (area.value >= 100 && area.value <= 130) bF = 1.3;
else if (area.value <= 160) bF = 1.27;
else if (area.value <= 200) bF = 1.24;
else if (area.value <= 300) bF = 1.22;
console.log(bF);
}
const data = [
{
floors: [ 1 ],
limits: [
{ f: 1.26, max: 120 },
{ f: 1.24, max: 140 },
{ f: 1.23, max: 160 },
{ f: 1.22, max: 200 },
{ f: 1.20, max: 260 },
{ f: 1.19, max: 300 },
],
},
{
floors: [ 2, 3 ],
limits: [
{ f: 1.00, max: 100, excludeMax: true },
{ f: 1.30, max: 130 },
{ f: 1.27, max: 160 },
{ f: 1.24, max: 200 },
{ f: 1.22, max: 300 },
],
},
];
const d = data.find(n => n.floors.includes(floors.value));
if (d) {
const v = area.value;
console.log((d.limits.find(n => n.excludeMax ? n.max > v : n.max >= v) || { f: 1 }).f);
}
function isInInterval(start, end) {
return area.value >= start && area.value <= end;
}
const values = floors.value === 1 ? [
[-Infinity, 120, 1.26],
[120.001, 140, 1.24],
[140.001, 160, 1.23],
[160.001, 200, 1.22],
[200.001, 260, 1.2],
[260.001, 300, 1.19]
] : floors.value === 2 || floors.value === 3 ? [
[100, 130, 1.3],
[130.001, 160, 1.27],
[160.001, 200, 1.24],
[200.001, 300, 1.22]
] : [];
const [,, result] = values
.find(([start, end]) => isInInterval(start, end)) || [,, 1];
console.log(result);