POS-V0.2

需求描述

商店里进行购物结算时会使用收银机(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(元)
**********************

作业要求

  1. main.js文件中编写实现代码并确保测试通过;
  2. 请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
  3. 将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号

作业提示

  1. 学会遍历查找内容
  2. 使用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进行查看。

猜你喜欢

转载自1445060302.iteye.com/blog/2415320