Code Monkey home page Code Monkey logo

take-out-food's Introduction

process

需求描述

某快餐品牌推出了它独家的外卖应用,用户可以在手机上直接下单。该应用会根据用户选择的菜品(Item)、数量(Count)和优惠方式(Promotion)进行计算,告诉用户需要支付的金额(Charge)。

优惠活动有多种形式。假设用户一次只能使用一种优惠,那么使用哪种优惠省钱最多就会是一个让用户头疼的问题。所以该外卖应用为了方便用户,在用户下单时,会自动选择最优惠的方式并计算出最终金额让用户确认。

我们需要实现一个名为bestCharge的函数,它能够接收用户选择的菜品和数量(以特定格式呈现)作为输入,然后返回计算后的汇总信息。

已知:

  • 该店的菜品每一个都有一个唯一的id
  • 当前的优惠方式有:
    • 满30减6元
    • 指定菜品半价
  • 除菜品外没有其它收费(如送餐费、餐盒费等)
  • 如果两种优惠方式省钱一样多,则使用前一种优惠方式

输入样例

["ITEM0001 x 1", "ITEM0013 x 2", "ITEM0022 x 1"]

输出样例

============= 订餐明细 =============
黄焖鸡 x 1 = 18元
肉夹馍 x 2 = 12元
凉皮 x 1 = 8元
-----------------------------------
使用优惠:
指定菜品半价(黄焖鸡,凉皮),省13元
-----------------------------------
总计:25元
===================================

使用另一种优惠的样例

输入:

["ITEM0013 x 4", "ITEM0022 x 1"]

输出:

============= 订餐明细 =============
肉夹馍 x 4 = 24元
凉皮 x 1 = 8元
-----------------------------------
使用优惠:
满30减6元,省6元
-----------------------------------
总计:26元
===================================

如果没有优惠可享受

输入:

["ITEM0013 x 4"]

输出:

============= 订餐明细 =============
肉夹馍 x 4 = 24元
-----------------------------------
总计:24元
===================================

基础作业

  1. 相关代码在src目录下
  2. 实现best-charge.js中的bestCharge函数
  3. 写代码前先使用tasking整理思路并画出管道图
  4. 先写测试再写实现,代码须跟管道图匹配
  5. 代码整洁、函数粒度合适、命名有意义

作业提示

  1. 可使用loadAllItems()方法获取全部的菜品
  2. 可使用loadPromotions()方法获取全部的优惠方式

运行测试

浏览器

可使用浏览器打开run-specs.html文件运行测试

take-out-food's People

Contributors

aysnine avatar linwenjun avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.