Сама задача проблем не вызвала, решил её следующим образом:
var calculateSalary = function (grossSalary) {
if(grossSalary < 100000) {
var tax = 0.35;
} else {
var tax = 0.45;
}
var salary = grossSalary*(1-tax);
return salary;
};
Затем решил на всякий случай посмотреть видеобзор и тут один момент вызвал вопросы. Лера почему-то совсем не рассматривает случай когда зарплата до вычета налогов будет равна ста тысячам. Проверка в обзоре имеет вид if (grossSalary > 100000), но у нас в условии задачи написано “если грязная зарплата больше или равна 100 тысячам, то налоги составляют уже 45%”, таким образом при grossSalary = 100000 функция вернет неправильное значение. Выходит что проверка должна быть либо if(grossSalary >= 100000) или if(grossSalary < 100000).
1 лайк
Здравствуйте. Вы правы. Действительно, в скринкасте я использую знак «больше», а не« больше или равно».
Спасибо вам за внимательность, в будущем исправим.
Видео объясняет логику решения, то, в какую сторону идти для решения задачи, поэтому маленькие несоответствия задаче не так важны. В данном случае важней понять, как решать подобные задачи, как рефакторить такой код и как писать решения подобных задач проще.
1 лайк
var calculateSalary = function(dirtyAmount) {
if(dirtyAmount <100000){
var calculateSalary = dirtyAmount - (dirtyAmount /100 * 35);
}else {
calculateSalary = dirtyAmount - (dirtyAmount /100 * 45);
}
return calculateSalary;
}
calculateSalary(40000);
я решил вот так.не очень коротко,но зато все понятно с процентами
var calculateSalary = function (salary) {
if (salary>= 100000) {
return salary - salary * 0.45;
}
return salary - salary* 0.35;
};
2 лайка
let calculateSalary = function (dirtySalary) {
let salaryTax = 0.35;
let cleanSalary = Math.ceil(dirtySalary - (dirtySalary * salaryTax));
if (dirtySalary >= 100000) {
salaryTax = 0.45;
cleanSalary = Math.ceil(dirtySalary - (dirtySalary * salaryTax));
}
return cleanSalary;
};
calculateSalary(40000);
Почему-то до сих пор ни в одном уроке не встречалась запись числа как 10000 = 1e5
. Еще в спецификацию языка добавилась поддержка такой записи 10_000. Хорошо бы разобрать данную тему: “Способы записи числа”.
const calculateSalary = function (salary) {
const BIG_SALARY = 1e5;
const percentTax = salary >= BIG_SALARY ? 0.55 : 0.65;
return Math.round(salary * percentTax);
};