Сложение значений регистра переключателей

Это может быть очень просто, поэтому я прошу прощения, но я не могу найти другого вопроса, задающего тот же/похожий вопрос. Вот оно...

Я пытаюсь найти способ сложить все значения регистра, используемые в каждом переключателе. Таким образом, чтобы вычислить все числа дней недели и вывести общие числа в следующем

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());

@axtck где мне это сделать? Я не вижу возможности.

NorthernWoolley 22.03.2022 21:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете получить значение для каждого дня недели, проанализировав его как число 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)

Потрясающий человек, огромное спасибо!

NorthernWoolley 20.03.2022 17:03

Другие вопросы по теме