@jtong
2016-04-28T12:15:56.000000Z
字数 1245
阅读 1928
练习
POS收银机 版本:v1
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店正在进行的优惠活动(Promotion)进行结算和打印购物清单。
已知该商店正在对部分商品进行“买二赠一”的优惠活动。
我们需要实现一个名为printInventory
函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。
输入格式(样例):
[
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000003-2',
'ITEM000005',
'ITEM000005',
'ITEM000005'
]
其中对'ITEM000003-2'来说,"-"之前的是标准的条形码,"-"之后的是数量。
当我们购买需要称量的物品的时候,由称量的机器生成此类条形码,收银机负责识别生成小票。
清单内容(样例):
***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
挥泪赠送商品:
名称:可口可乐,数量:1瓶
名称:羽毛球,数量:1个
----------------------
总计:21.00(元)
节省:4.00(元)
**********************
spec/main-spec.js
中的测试用例,在src/main.js
文件中编写实现代码并确保测试通过;可使用loadAllItems()
方法获取全部的商品,该方法返回结果为一个包含了商品对象的数组(样例):
[ item1, item2, item3, ..., itemN ]
每一个商品对象的结构如下(样例):
{
barcode: 'ITEM000000',
name: '可口可乐',
unit: '瓶',
price: 3.00
}
可使用loadPromotions()
方法获取全部的促销信息,该方法返回结果为一个包含有促销信息对象的数组(样例):
[
{
type: 'BUY_TWO_GET_ONE_FREE',
barcodes: [
'ITEM000000',
'ITEM000001'
]
},
{
type: 'OTHER_PROMOTION',
barcodes: [
'ITEM000003',
'ITEM000004'
]
}
]
应学习并善于使用各种流行浏览器所附带的开发人员工具中的控制台(Console)功能。