商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)进行结算和打印购物清单。

我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。

输入格式(样例):

['ITEM000000','ITEM000000','ITEM000000','ITEM000000','ITEM000000','ITEM000001','ITEM000001','ITEM000004'
]

(当点击"保存并提交代码"按钮的时候,我们会调用函数printInventory将上面的数据作为参数(inputs)传入该函数。)

清单内容(样例):

***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************
function loadAllItems() {return [{barcode: 'ITEM000000',name: '可口可乐',unit: '瓶',price: 3.00},{barcode: 'ITEM000001',name: '雪碧',unit: '瓶',price: 3.00},{barcode: 'ITEM000002',name: '苹果',unit: '斤',price: 5.50},{barcode: 'ITEM000003',name: '荔枝',unit: '斤',price: 15.00},{barcode: 'ITEM000004',name: '电池',unit: '个',price: 2.00},{barcode: 'ITEM000005',name: '方便面',unit: '袋',price: 4.50}];
}
describe('practice-1-3', function () {var allItems;var inputs;beforeEach(function () {allItems = loadAllItems();inputs = ['ITEM000000','ITEM000000','ITEM000000','ITEM000000','ITEM000000','ITEM000001','ITEM000001','ITEM000004'];});it('should print correct text', function () {printInventory(inputs);var expectText ='***<没钱赚商店>购物清单***\n' +'名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)\n' +'名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)\n' +'名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)\n' +'----------------------\n' +'总计:23.00(元)\n' +'**********************';expect(logs[0]).toBe(expectText);});
});

答案:

1)定义求和变量sum、count、item,并赋值sum、count为零;定义数组cart_list和item_list存放商品信息:

var sum=0;var cart_list=[];var item;var item_list=[];var count=0;

2)把loadAllItems()函数赋给变量allItems:

var allItems=loadAllItems();

3)遍历inputs数组,再遍历allitems,然后判断它们的barcode是否相等,把参数allitem放到数组cart_list中:

inputs.forEach(function(input){                           allItems.forEach(function(allitem){ if(allitem.barcode == input)   {cart_list.push(allitem);  }})})

4) 遍历car_list数组,把carts赋值给item,再判断数组长度是否为零:

cart_list.forEach(function(carts){  item=carts;if(item_list.length === 0)   {}

5)如果遍历的参数的barcode在item数组里有,则把该参数的数量加1,然后跳出本次循环:

if(items.barcode == item.barcode){items.count++;return;  }

6)判断是否已经遍历到最后一个对象了,如果数组里面没存有该对象,则把该参数放到数组里,并赋值为1:

else if(index == item_list.length-1)   //判断是否已遍历到最后一个对象{item.count=1;item_list.push(item);}             

7)最后遍历数组item_list,循环遍历输出,再计算商品的总价格,并且打印输出结果:

item_list.forEach(function(allitems){list=list+'\n'+'名称:'+allitems.name+',数量:'+allitems.count+allitems.unit+',单价:'+allitems.price+'.00(元)'+',小计:'+allitems.count*allitems.price+'.00(元)';sum += allitems.count*allitems.price;    //计算总价格})
console.log(list+'\n'+'----------------------'+'\n'+'总计:'+sum+'.00(元)'+'\n'+'**********************');

JS pos机- V0.2相关推荐

  1. 出门刷卡要小心!一种可以从POS机终端收集信用卡信息的恶意软件出现了

    本文讲的是出门刷卡要小心!一种可以从POS机终端收集信用卡信息的恶意软件出现了,Neutrino与其他恶意软件研发者一样,都希望他们所研发的恶意软件能够长期地被黑客利用并占据一定的市场份额,所以Neu ...

  2. rust怎么用items刷东西_装修贷卡怎么刷?不同银行的用不同的POS机刷才对

    工商装修贷卡,中国银行装修贷卡,中国邮政装修贷卡这三家银行的装修贷卡都是属于储蓄卡模式,银行不限制要在那个指导行业POS机上刷,所以一般POS机都可以刷,是没问题的,但是,要注意了,99.99%的PO ...

  3. 书店POS机--细化迭代1--测试

    2019独角兽企业重金招聘Python工程师标准>>> 在细化迭代1,我们需要实现书店POS机基础数据(产品类别,产品,客户)增删改查. 对于细化迭代1的实现成果测试如下: 一.程序 ...

  4. java 检查pos机状态_POS机故障大全及排查方法

    主机故障排查 显示屏幕不亮 1.请检查电源是否插好.电源开关是否开启; 2.如是分体机具,请将手柄放置在底座上; 3.请关闭电源开关并拔去电源线,待15秒后重新接上电源线并开启电源开关,重启POS机; ...

  5. 经常刷同一台POS机,信用卡会被降额吗?

    经常在同一台pos机上刷卡,会不会被降额主要取决于你是否涉嫌恶意套现.如果你是正常的消费,就算你天天在一台pos机上刷也没问题,但是如果你是刻意套现,那就很容易被降额处理. 我就经常在同一个pos上刷 ...

  6. pos机未能连接服务器,pos 机链接不了服务器

    pos 机链接不了服务器 内容精选 换一换 在本章节中,您将运行已部署好的游戏,登录游戏客户端.已准备好Windows机器,硬盘至少20G,且必须安装有显卡.服务器地址:节点的弹性IP地址,请登录CC ...

  7. POS机C井例子代码(2)

    详细代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; usin ...

  8. 银联pos小票word模板_商家pos机刷卡必须知道的知识

    相信很多卡友伙伴或者商铺店家都装有pos机,然后一般pos机都没有使用说明书,更没有结合刷卡方法在内的秘籍.今天我就分享下刷卡必须知道的一些知识. 刚刚办理pos机的当天一定要注意:使用之前呢,务必核 ...

  9. 织梦dedecms内核自适应移动POS机刷卡机招商加盟企业网站源码

    简介: POS机移动卡机网站模板采用自适应结构,兼容性强, 后台提供各种文档发布功能,适用于数码企业建站和电子相关企业网站. 通过互联网POS机,打通线上商城和线下结合体验,实现互联网销售POS机及P ...

最新文章

  1. 团队开发中的 Git 实践
  2. Spring学习(五)——Spring注解(一)
  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
  4. (lucas) Saving Beans
  5. 恶意造谣水滴筹的违法分子已被警方依法处理
  6. Oracle 10g新特性——正则表达式(转)
  7. Servlet 快速开始 表单中文字段
  8. LOGO语言初学指南(一)下载LOGO
  9. flash builder 4.6 mac 版破解方法
  10. 亲自体验了vscode网页版开发代码并提交代码到github代码库,发现出奇的流畅,手机和平板也可以很愉快的编写代码了
  11. 小米红米手机绕过内测申请,“偷渡”升级到开发版(内测版)详细教程,告别刷分和等待!
  12. Python 将中文大写数字转为阿拉伯数字
  13. 升级Win10注意事项个人总结
  14. 下注玩客币到重仓公链,迅雷的区块链转型之路
  15. 淘宝、天猫、京东主图及详情页尺寸
  16. MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器
  17. 忙里偷闲第三弹:开发成绩查询微信公众号
  18. 【Python3爬虫】破解同程旅游加密参数 antitoken-爬虫深度技术
  19. 盐城计算机工程学院,​盐城市计算机学会召开2020年会
  20. H5页面验收流程及性能验收标准

热门文章

  1. redis面试:哨兵模式主从切换数据丢失问题
  2. caffe中loss函数代码分析--caffe学习(16)
  3. Expression #3 of ORDER BY clause is not in SELECT list,references column ‘xx‘which is not in SELECT
  4. NFS nfs4_reclaim_open_state lock reclaim failed
  5. 202203 word中的表格 实现 外框线粗 内部线细
  6. TwinCAT3 与 SMC(EX600总线模块)通讯
  7. 360权重是什么,360权重怎么查询
  8. 求解1-1/2+1/3+...1/99-1/100的和
  9. 小视频源码,设计模式单例模式
  10. OSPF基本配置及手动修改路由器优先级