需求描述
商店里进行购物结算时会使用收银机(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进行查看。