1.教学目标
学会把基本描述转换成程序;
熟悉循环嵌套的使用;
2.需求描述
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)进行结算和打印购物清单。
我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。
3.输入格式(样例):
[ { barcode: 'ITEM000000', name: '可口可乐', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000000', name: '可口可乐', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000000', name: '可口可乐', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000000', name: '可口可乐', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000000', name: '可口可乐', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000001', name: '雪碧', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000001', name: '雪碧', unit: '瓶', price: 3.00 }, { barcode: 'ITEM000004', name: '电池', unit: '个', price: 2.00 } ]
(当点击"保存并提交代码"按钮的时候,我们会调用函数printInventory将上面的数据作为参数(inputs)传入该函数。)
4.清单内容(样例):
***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************
5.作业要求
在main.js文件中编写实现代码并确保测试通过;
请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号
6.作业提示
学习将重复的内容合并再转化成清单
使用console.log输出(仅允许使用一次)
7.答案:
1)定义数组item_list存放商品信息;遍历数组inputs;’判断item_list的长度是否为零;把参数item放到数组 item_list中。
function printInventory(inputs) { var item_list=[]; for(var i=0;i<inputs.length;i++) { var item=inputs[i]; if(item_list.length==0){ item.count=1; item_list.push(item); } else { itemListResultJudgment(inputs,i,item,item_list) } } var list = getItemListResult(item_list); console.log(list); }
2)遍历数组item_list;判断inputs[i]和item_list[j]的barcode是否相等;若相等,则item_list[j]的count加一,最后中断循环,防止数组的长度改变。若不相等,则判断是否为数组的最后一位,即数组的长度减一,然后把参数item放到数组 item_list中,最后中断循环,以防上面的循环继续。
function itemListResultJudgment(inputs , i,item,item_list) { for(var j=0;j<item_list.length;j++) { if(inputs[i].barcode==item_list[j].barcode){ item_list[j].count++; break; } else if(j==item_list.length-1){ item.count=1; item_list.push(item); break; } } }
3)最后遍历数组item_list,循环遍历输出,再计算商品的总价格,并且打印输出结果
function getItemListResult(item_list) { var list='***<没钱赚商店>购物清单***'; var sum=0; for(var n=0;n< item_list.length;n++){ list=list+'\n'+'名称:'+item_list[n].name+','+'数量:'+item_list[n].count+item_list[n].unit+','+'单价:'+item_list[n].price+'.00(元)'+','+'小计:'+item_list[n].count*item_list[n].price+'.00(元)'; sum+=item_list[n].count*item_list[n].price; } list=list+'\n'+'----------------------'+'\n'+'总计:'+sum+'.00(元)'+'\n'+'**********************'; return list; }
详情请点击http://www.codefordream.com/courses/js-pos-boot-camp/sections/section_1/practices/normal/practice_2/items/code进行查看。
相关推荐
FS4062的应用领域非常广泛,包括唱戏机、扩音器、蓝牙音响、POS机、电动工具等多类多串锂电池应用产品。 FS4062的特点包括: * 输入电压4.5V-6V * 对多串锂电池或磷酸铁锂电池进行完整的充电管理 * 恒压充电值由外...
06033C104JAT2A CAP, CERM, 0.1 礔, 25 V, +/- 5%, X7R, 0603 06035A180JAT2A CAP, CERM, 18 pF, 50 V, +/- 5%, C0G/NP0, 0603 1715721 Conn Term Block, 2POS, 5.08mm, TH 1902C Standoff, Hex, 0.5"L #4-40 ...
在本文中,我们将深入探讨如何使用TMS320F28335微控制器的增强型正交编码器接口(EQEP)来测量电机...在实际项目中,开发者可能还需要结合"eqep_pos_speed"这样的示例代码或文档,进一步了解具体的编程细节和实践技巧。
1. **高精度输出电压**:S-1200系列能够在1.5V到5.5V的范围内以0.1V为进阶单位选择输出电压,满足不同应用场景的需求。 2. **支持小型陶瓷电容器**:该系列稳压器可以使用0.1μF的小型陶瓷电容器,有助于减小电路板...
该模块的应用场景十分广泛,可以用于云喇叭、POS机、对讲机(PoC)、固定无线接入(FWP)等多种物联网设备中,满足不同行业的通信需求。 #### 二、关键技术和规格参数 1. **支持的网络制式**: - **4G LTE**: 支持FDD-...
1. **电压**:多数舵机工作在4.8V至6V之间,S3010可能也是如此,确保在指定电压范围内供电以避免损坏。 2. **扭矩**:扭矩是衡量舵机能产生的转动力的指标,S3010可能具有一定的额定扭矩,比如2kg·cm或更高,这决定...
MT6735是一款由联发科(MediaTek)推出的面向入门级和中低端智能手机和平板电脑的系统级芯片(SoC),它在Android设备中广泛使用,尤其适用于工业控制主板、POS机以及各种移动应用场景。这个资料套装包含了与MT6735...
3. **电子销售点系统**:在POS机等商业设备中,稳定的电源监控是至关重要的。 4. **电网基础设施**:在电力传输和分配系统中,可靠电压监控有助于防止故障。 5. **数据中心和企业计算**:在服务器和数据中心,高效的...
- **命令仿真**:支持ESC/POS部分指令集。 - **外观尺寸**: - 尺寸:102*78*46mm。 - 重量:134g(含电池)。 - **型号**:5802 和 5801。 - **充电指示灯**:红色表示充电中,蓝色表示充满。 - **外部接口**:9V...
蓝芯E管家 V2.0.0.1 Bate1 a).修正基础信息不能获取维修单单号的BUG. b).修正账单查询其他功能不是按月统计的BUG. c).修正维修单完结后还存留在售后表里面. d).修正维修单入账失败的BUG. 2014-01-23 21:00 蓝芯E...
- **电源**:支持3.4V ~ 4.2V电压范围,典型值为3.8V。 - **尺寸与重量**:尺寸为30.0*30.0*2.5mm,重量为4.6±0.1g。 - **数据传输速度**:具体速度见AT指令操作部分。 - **其他接口**:包括USB2.0、(U)SIM卡、PCM...
5. **多样化的应用领域**:适用于POS系统、蓝牙键盘、鼠标、游戏手柄、家庭自动化、智能玩具、无线传感器等多种场景。 #### 三、模块技术规格 - **蓝牙协议**:支持最新的Bluetooth Specification V2.1+EDR标准...
也适用于POS手持机行业,支持CMUX多路复用和PPP拨号协议。 #### SIM800W/SIM840W概述 - **产品特点**:SIM800W/SIM840W是一款功能全面的GPRS/GSM模块,尺寸为26x26x3mm,采用独立的内存芯片。 - **接口与功能**:...
20. `IN_POS_MA = 0.1`: 定位窗口,允许的定位误差范围。 21. `RED_VEL_AXC = 5`: 轴的速度缩减系数,用于手动操作时的速度调整。 22. `RED_ACC_0V = 100`: 轴的加速倍率的缩减,可能与速度超额设定值有关。 23. ...
SSD1801字符显示驱动器的设计可以用于多种设备,包括无绳电话、销售点系统(POS)、传真机以及简单的便携式系统等场景。这款驱动器能够显示2行或3行,每行16个字符,字符的格式为5x8点阵。 SSD1801的主要功能特点...
10、数据输出频率0.1Hz~200Hz。 11、数据接口:串口(TTL电平,波特率支持2400、4800、9600、19200、38400、57600、115200、230400、460800、921600),I2C(最大支持高速IIC速率400K) 12、扩展口功能:模拟输入(0~...
2. 可选配置:剩余车位显示屏/顾客显示屏/票据打印机/车牌识别/人像抓拍/证件抓拍/羊城通 POS 扣费 3. 预留接口:钱箱联动/红绿通行指示灯/银联卡交费/深圳通卡交费/手机卡交费/消费打折/积分抵扣/消防联动等 十一...