需求描述
商店里进行购物结算时会使用收银机(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(元)
**********************
作业要求
- 在
main.js
文件中编写实现代码并确保测试通过; - 请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
- 将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号
作业提示
- 学会遍历查找内容
- 使用console.log输出(仅允许使用一次)
答案:
1.把loadAllItems()函数赋给变量allItems,获取所有商品的信息;遍历inputs数组,再遍历allitems,然后判断它们的barcode是否相等,把参数allitems放到数组cart_list中:
function printInventory(inputs) { var allItems=loadAllItems(); var cart_list=[]; for(var i=0;i<inputs.length;i++){ for(var k=0;k<allItems.length;k++){ if(allItems[k].barcode == inputs[i]) { cart_list.push(allItems[k]); } } }
2.定义数组item_list存放商品信息;遍历数组cart_list;判断item_list的长度是否为零;把参数item放到数组 item_list中。
for(var m=0;m<cart_list.length;m++){ var item=cart_list[m]; if(item_list.length==0){ var count=0; item.count=1; item_list.push(item); } else{ for(var i=0;i<inputs.length;i++){ for(var k=0;k<allItems.length;k++){ if(allItems[k].barcode == inputs[i]) { cart_list.push(allItems[k]); } } } } }
3.最后遍历数组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; } console.log(list); }
在这里,我们要特别注意每个数组所代表的含义。当数组过多时,一定要尽可能的定义到与题意相关的信息,定义时应运用蛇底式或驼峰式进行命名。打代码时应尽量使顺序流畅,可使用function进行声明调用,避免冗杂。每个function都是独立的个体,只会在调用时进行运用。若因代码过多产生细节错误,要先查看是否为语法错误,可运用/* */进行检验。若无语法错误,再从上到下进行排除法,缩小范围,进行验证。
详情请点击http://www.codefordream.com/courses/js-pos-boot-camp/sections/section_1/practices/normal/practice_3/items/code进行查看。
相关推荐
压缩包中的“POS_V0.2”很可能是指POS系统的源代码、固件或者配置文件,这些内容可能包括以下几个方面: 1. **源代码**:开发人员编写的程序代码,可能用C或C++等语言编写,用于实现POS系统的业务逻辑,如商品扫描...
公达pos1200驱动是由公达官方为该型号的POS打印机打造的一款驱动程序,用户安装了驱动程序以后,就可以让打印机与电脑顺利的进行连接,轻松完成日常的打印工作,欢迎有需要的朋友下载使用!使用说明P代表并口LPTU...
iMX6Q核心板配套开发底板AD...BAT54HT1G DIODE SCHOTTKY 30V 0.2A SOD323 BGX50AE6327 DIODE SWITCHING 50V SOT-143 BLA2ABB221SN4D FERRITE ARRAY 220 OHM 0804 SMD BLM15AX601SN1D FERRITE CHIP 600 OHM 0402 420mA B
BAT54HT1G DIODE SCHOTTKY 30V 0.2A SOD323 BGX50AE6327 DIODE SWITCHING 50V SOT-143 BLM15AX601SN1D FERRITE CHIP 600 OHM 0402 420mA BLM18SG221TN1D FERRITE CHIP 220 OHM 2500MA 0603 C1005C0G1H150J CAP CER ...
BAT54HT1G DIODE SCHOTTKY 30V 0.2A SOD323 BGX50AE6327 DIODE SWITCHING 50V SOT-143 BLM15AX601SN1D FERRITE CHIP 600 OHM 0402 420mA BLM18SG221TN1D FERRITE CHIP 220 OHM 2500MA 0603 C1005C0G1H150J CAP CER ...
余额为0.2元。 2、报表的反映。分为三个内容:a)消费总金额 b)现金支付金额 realAmount c)卡支付金额(负为客户欠商家的钱),可以保存在pos_bill.cardAmount 2007-9-13 V7.18_4: 7、 Pos_Bill字段说明:billAmt ...
BAT54HT1G DIODE SCHOTTKY 30V 0.2A SOD323 C0201 C 0.22uF X7R 16V 10﹪ 0402 CAP C 10uF X7R 50V 10% 1210 CAP TANT 长寿命 220uF 50V ±20% 10x16 -40℃ - 105℃ CM2020-00TR IC HDMI TX PORT P/I 38-TSSOP CON...
-w 200 -bgc 0.2 0.2 0.2 -in "coco" CoCo; menu -label "ļ" -tearOff true; menuItem -label "½ļ" -c "wenjian"; ... ``` 以上代码展示了如何创建一个包含菜单栏和其他控件的窗口。通过这些控件,用户可以进行...
总之,启新会员管理软件v1.0.0.2通过集成会员管理、储值充值、积分系统、POS打印和统计报表等功能,为企业提供了一站式的会员管理平台,有助于提升客户服务质量和销售业绩。同时,其可定制化的特点确保了软件能够...
pos = pd.read_table('E:/NLP/chinese-w2v-sentiment/data/pos.csv',header=None,index_col=None) neg = pd.read_table('E:/NLP/chinese-w2v-sentiment/data/neg.csv',header=None,index_col=None) 导入...
RS-485的标准逻辑电平为:逻辑一的电平不得低于-200mV,逻辑零的电平不得低于+200mV,电压差最小为0.2V。RS-485使用双绞线作为传输介质,支持全双工操作,最远可以传输超过1200米。RS-485系统中通常需要使用两个终接...
w=abs(V(:,pos)); w=w/sum(w); t=D(pos,pos); disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');disp(t); %以下是一致性检验 CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 ...
蓝芯E管家 V2.1.0.2 1.修正退货退款某些接口录入无法打开仓库窗口的BUG. 2.修正售后管理系统维修完成后没有完成时间的bug. 3.完善帮助功能. 4.客户群导出功能. 5.修正超级列表框排序问题. 6.更新统计数据部分功能. 7...
<!..._position:;min-height:100%}#head{padding-bottom:100px;text-align:center;*z-index:1}#ftCon{height:100px;position:absolute;...list-style:none}body,form,#fm{position:relative}td{text-align:left}img{border...
//hv_dbg("framerate: %0.2ffps\n",cap->cap_fps); } //sync capture info perp x second #define M_SECOND 200 if(is_x_msec(M_SECOND,(long long)(buf.timestamp.tv_sec),(long long)(buf.timestamp.tv_usec)...
TCHNO"),'N',NULL,"A2"."SDBATCHNO"),"A2"."SDPROMPRICE" FROM "POS" ."SALEDETAIL"@! "A2" WHERE TO_CHAR("A2"."SDSWAPDATE",'yymmdd')|| SUBSTRB("A2"."SDMKTNO",(-3))||SUBSTRB("A2"."SDPOSNO",(-2))||SUBS TRB...
- 当V200.7接通时,Q0.0发出脉冲,V201.0确定方向。 - 触碰到限位开关的上升沿时,会产生方向改变;在下降沿时停止,并将VD128中的数值传送到HC0中。 - 分配库存储区中有许多重要参数,如当前位置(C_Pos)等。 ##...
pos = pd.read_table('E:/NLP/chinese-w2v-sentiment/data/pos.csv',header=None,index_col=None) neg = pd.read_table('E:/NLP/chinese-w2v-sentiment/data/neg.csv',header=None,index_col=None) 导入数据,然后...
G.add_edge('a', 'c', weight=0.2) G.add_edge('c', 'd', weight=0.1) G.add_edge('c', 'e', weight=0.7) G.add_edge('c', 'f', weight=0.9) G.add_edge('a', 'd', weight=0.3) ``` 5. **按权重划分边**: -...