教学目标
学会把基本描述转换成程序;
熟悉循环嵌套的使用;
需求描述
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)进行结算和打印购物清单。
我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。
输入格式(样例): [ {barcode: 'ITEM000000',name: '可口可乐',unit: '瓶',price: 3.00}, {barcode: 'ITEM000000',name: '可口可乐',unit: '瓶',price: 3.00}, {barcode: 'ITEM000000',name: '可口可乐',unit: '瓶',price: 3.00}, { name: '可口可乐',unit: '瓶',price: 3.00,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)传入该函数。)
清单内容(样例):
***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************
作业要求
在main.js文件中编写实现代码并确保测试通过;
请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号
作业提示
学习将重复的内容合并再转化成清单
使用console.log输出(仅允许使用一次)
main.js
function printInventory(inputs) { var item; var item_list=[]; var list='***<没钱赚商店>购物清单***'; var sum=0; for(var i=0;i<inputs.length;i++){ item=inputs[i];/ if(item_list.length===0){ item.count=1; item_list.push(item); } else{for(var j=0;j<item_list.length;j++){ if(inputs[i].barcode==item_list[j].barcode){ item_list[j].count++; } else if(j==item_list.length-1){ POS收银机此题运用了: 1 for循环遍历数组; 2对象中键所对应的值; 3拼接字符串; item_list.push(item); item.count=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'+'**********************'; console.log(list); }
本题与POS收银机 版本:v0很是相似,输入格式有的区别,只要把它的输入格式改变就好解决问题。
使输入格式是相同,创建新的数组。
POS收银机 v0.1此题运用了: 1 for循环遍历数组;
2对象中键所对应的值;
3拼接字符串;
4if else 语句;
5数组的添加 用push;