商店里进行购物结算时会使用收银机(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'+'**********************');
相关推荐
压缩包中的“POS_V0.2”很可能是指POS系统的源代码、固件或者配置文件,这些内容可能包括以下几个方面: 1. **源代码**:开发人员编写的程序代码,可能用C或C++等语言编写,用于实现POS系统的业务逻辑,如商品扫描...
对于零售、餐饮等需要快速响应的行业,POS(Point of Sale,销售点)系统是不可或缺的一部分,而“node-escpos”就是这样一个基于Node.js的库,专为Windows环境下的POS打印机提供服务。这个库允许开发者通过Node.js...
联迪pos机驱动联迪E550移动pos机 - 移动pos机,银联pos机,
"pyltp_binary-0.2.1.0-cp38-cp38-win_amd64" 是一个针对Python 3.8版本、64位Windows操作系统的软件包,主要用于自然语言处理(NLP)领域。这个包是基于LTP(Language Technology Platform,语言技术平台)的Python...
FX-TRN-POS日文版---三菱教学软件: 电机定位控制教学软件日文版---三菱学习小软件+方便快捷+初学者的最佳帮手
15企业流程管理之聪明整合[教材]---加油站POS系统--信.pptx
15企业流程管理之聪明整合[教材]---加油站POS系统--信息化建设(ppt文档).ppt
POS 机芯片型号整理 POS 机是指点售机,是一种电子支付终端,能够为用户提供便捷的支付服务。随着科技的发展,POS 机的芯片型号也在不断更新换代。下面,我们将对 POS 机的芯片型号进行整理和分析。 1. 主控芯片 ...
POS机对接SDK是一种软件开发工具包,主要用于帮助开发者在C#环境下实现与POS(销售点)设备的交互。8583是金融行业的标准报文格式,全称为ISO 8583,用于电子支付系统中的数据交换。在这个场景中,8583报文被用来...
公达pos1200驱动是由公达官方为该型号的POS打印机打造的一款驱动程序,用户安装了驱动程序以后,就可以让打印机与电脑顺利的进行连接,轻松完成日常的打印工作,欢迎有需要的朋友下载使用!使用说明P代表并口LPTU...
03481 飞达商贸有限公司POS系统--JavaEE 项目开发培训视频(PPT 27页).ppt
首先,ESC/POS(Escape POS)是一种打印机控制语言,广泛应用于各种热敏收银机和条形码打印机。这种语言由一系列的控制序列组成,用于指示打印机执行特定操作,如文本打印、图像打印、条形码生成等。理解并掌握ESC/...
【Android代码-安卓版本pos机】项目主要涵盖了在Android平台上开发的一款移动支付终端应用,它允许用户通过智能手机或平板电脑进行类似于传统POS机的交易操作。这个项目的核心目标是将传统的零售支付体验移植到移动...
在IT行业中,尤其是在支付系统和零售业,与POS(Point of Sale)机的通信是至关重要的。本项目涉及的是使用Java进行串口通信,以便与银联POS机进行交互。以下将详细介绍这个过程中的关键知识点。 1. **Java串口通信...
打印ESC / POS变得简单快捷。 最先进的开源,可毫不费力地构建功能强大的热敏打印解决方案。 ESC-POS-USB-NET是使用USB设备驱动程序的爱普生ESC / POS打印的免费开放源.NET(C#)实现。 专注于您的业务逻辑。 ...
本案例中的“pos-machine_UML.rar”是一个压缩包,包含了一个名为“pos_machine_UML.mdl”的文件,这很可能是用某种UML建模工具创建的类图模型,专门描绘了POS(Point of Sale,销售点)机的系统结构。POS机是商业...
- DownloadTool-V3.5.2.CHS 和 DownloadTool-V3.5.2.ENU 可能是下载工具的不同语言版本,分别对应简体中文和英文,用户可以根据需要选择合适的版本来下载和安装8210POS机的相关软件。 - 8210.exe 可能是8210POS机的...
【易通支付POS机软件 v2.0.8】是一款专为教育教学领域设计的移动支付应用,它将便捷的支付功能与教学管理相结合,旨在提升教育机构财务管理的效率和安全性。这款软件允许用户通过安卓设备进行各类交易操作,简化了...
POS机行业2022年发展概况分析及未来十年POS机行业数据趋势预测.docx