Чистое меню закусочной на Javascript в качестве вывода, ввод из вариантов

#javascript

Вопрос:

Итак, я нахожусь в учебном лагере по программированию и нахожусь на 4-й неделе. Мне это нравится, но временами я чувствую себя подавленным. Это часть процесса обучения, хотя, так что я хорошо с этим справляюсь. В любом случае, я изучал JavaScript последние 4 дня, и наша домашняя работа состоит в том, чтобы составить меню закусочной.

Мы узнали, как размещать объекты сегодня, а циклы по каждому элементу вчера и функции стрелок, которые, я думаю, тоже были вчера. Они мне очень нравятся, и я хочу, чтобы этот проект был как можно более динамичным. Однако у меня возникли проблемы с размещением моего главного меню в консоли. Я нашел, возможно, решение на этом сайте, но я не могу заставить его работать. Может быть, мне следует просто сделать все это более простым способом, но я действительно хочу, чтобы мои пункты меню были вложены так, как они есть. Вот что у меня есть на данный момент.

         console.log ("Welcome to HotHamTawk!")
        console.log ("Where there are only three options and a few sides but that's it because it's dirt cheap and we don't care. And we don't make change!")
        console.log ( "Now pick your first item already, people are waiting!")
        
        const render = ({name, price}) => {
        return(`${name} => ${price}.00`)
        }
        
        
        function resetValuesToZero (obj) {
            Object.keys(obj).forEach(function (key) {
                if (typeof obj[key] === 'object') {
                    return resetValuesToZero(obj[key]);
                }
                obj[key] = 0;
            });
        }
        
        const main = {
          hotdog : {name : "Hotdog" , price : 1},
          hamburger : {name : "Hamburger" , price : 2},
          taco : {name : "Taco" , price : 1}
        }
          
        const side = {
          beans : {name : "Beans" , price : 1},
          chili : {name : "Chili" , price : 1},
          soda : {name : "Soda" , price : 1}
        }
        
        console.log(main.hamburger.taco.name); // 70
        resetValuesToZero(main);
        console.log(main.hamburger.taco.name); // 0
        
        
        // console.log(render(main.key)) 

Поэтому прямо сейчас я пытаюсь получить запрос на вывод, в котором будет сказано:

 Hotdog => $1.00
Hamburger => $2.00
Taco => $1.00
 

Ответ №1:

В вашем коде много проблем, поэтому я его переписал.

 console.log ("Welcome to HotHamTawk!")
console.log ("Where there are only three options and a few sides but that's it because it's dirt cheap and we don't care. And we don't make change!")
console.log ( "Now pick your first item already, people are waiting!")

const render = type => {
  const output = [`${type} Menu:`];
  Object.values(menu[type]).forEach(({name, price}) => {
    output.push(`${name} => ${price.toFixed(2)}`);
  });
  return output.join('n');
}

const main = {
  hotdog : {name : "Hotdog" , price : 1},
  hamburger : {name : "Hamburger" , price : 2},
  taco : {name : "Taco" , price : 1}
};

const side = {
  beans : {name : "Beans" , price : 1},
  chili : {name : "Chili" , price : 1},
  soda : {name : "Soda" , price : 1}
};

const menu = {
  'Main' : main,
  'Side' : side
};

console.log(render('Main'));
console.log(render('Side')); 

Комментарии:

1. Спасибо! Это прекрасно и именно то, что мне было нужно!