Это может быть очень просто, поэтому я прошу прощения, но я не могу найти другого вопроса, задающего тот же/похожий вопрос. Вот оно...
Я пытаюсь найти способ сложить все значения регистра, используемые в каждом переключателе. Таким образом, чтобы вычислить все числа дней недели и вывести общие числа в следующем
const getSleepHours = (day) => {
switch(day) {
case "Monday":
return "8";
break;
case "Tuesday":
return "9";
break;
case "Wednesday":
return "9.5";
break;
case "Thursday":
return "11";
break;
case "Friday":
return "10.5";
break;
case "Saturday":
return "13";
break;
case "Sunday":
return "12";
break;
default:
return "Not sure what day that is";
}
};
Итак, 8 + 9 + 9,5 + 11 + 10,5 + 13 + 12. До сих пор я пробовал такие вещи, как следующие
const getSleepHours = (day) => {
switch(day) {
case "Monday":
return "8";
break;
case "Tuesday":
return "9";
break;
case "Wednesday":
return "9.5";
break;
case "Thursday":
return "11";
break;
case "Friday":
return "10.5";
break;
case "Saturday":
return "13";
break;
case "Sunday":
return "12";
break;
default:
return "Not sure what day that is";
}
};
const getActualSleepHours = () => {
const getSleepHours = ("Monday","Sunday");
return getSleepHours();
};
console.info(getSleepHours());


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете получить значение для каждого дня недели, проанализировав его как число float. Затем используйте эти значения для расчета суммы (например, с помощью reduce()).
Кроме того, если вы return вышли из кейса, вам не нужно break, потому что он больше не доступен.
const getSleepHours = (day) => {
switch (day) {
case "Monday":
return "8";
case "Tuesday":
return "9";
case "Wednesday":
return "9.5";
case "Thursday":
return "11";
case "Friday":
return "10.5";
case "Saturday":
return "13";
case "Sunday":
return "12";
default:
return "Not sure what day that is";
}
};
const days = [
"Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"
];
// get hours as float values
const sleepHours = days.map((d) => parseFloat(getSleepHours(d)));
// calculate the total
const sum = sleepHours.reduce((a, b) => a + b, 0);
console.info(sum);Можно и без switch-case
// 1️⃣
// Using Map object
// If you define duplicated key It won's so error
const sleepHours = new Map([
['monday', 8],
['tuesday', 9],
['wednesday', 9.5],
['thursday', 11],
['friday', 10.5],
['saturday', 13],
['sunday', 12],
])
let totalSleepHours = 0
for (const [key, value] of sleepHours) {
totalSleepHours += value
}
// 2️⃣
// Using object
const sleepHours = {
monday: 8,
tuesday: 9,
wednesday: 9.5,
thursday: 11,
friday: 10.5,
saturday: 13,
sunday: 12,
}
// If not provide initial value, array element at index 0 is used as the initial value
Object.values(sleepHours).reduce((acc, curr) => acc += curr)
Потрясающий человек, огромное спасибо!
@axtck где мне это сделать? Я не вижу возможности.