party_bid_core是在已经做过party-bid和学过测试知识之后,再回头来思考party-bid的数据处理方式,这一次我们用到了三种数据结构。
第一种:
[{ name: "first activity", sign_ups: [], bids: [] }, { name: "second activity", sign_ups: [ { name:"仝键", phone:"13600000000" }, { name:"于硕", phone:"15600000000" }, { name:"吴京川", phone:"13800000000" } ], bids: [ { name:"竞价1", biddings : [ { name: "仝键", phone:"13600000000", price: "12" }, { name: "于硕", phone:"15600000000", price: "10" } ] }, { name:"竞价2", biddings : [ { name: "仝键", phone:"13600000000", price: "10" }, { name: "于硕", phone:"15600000000", price: "12" }, { name: "吴京川", phone:"13800000000", price: "10" } ] } ] }];
这一种数据结构中,嵌套还是比较多的,但是每一项数据都是嵌套在activities中,我们给activities三个属性:name,sign_ups,bids.在sign_ups中存储报名者的信息(name和phone),在bids中存储竞价信息,竞价信息包括:name和biddings属性,因为每一个竞价的活动都有一个名字和与其相关的竞价者发来的竞价内容,在biddings中就存储竞价者竞价的内容,包括:竞价者的名字name,竞价者的电话号码phone,以及竞价者的竞价price。
第二种数据结构:
{ "0":{ name: "first activity", sign_ups:[], bids:[], biddings:{} }, "1": { name: "second activity", sign_ups: [ { name:"仝键", phone:"13600000000" }, { name:"于硕", phone:"15600000000" }, { name:"吴京川", phone:"13800000000" } ], bids:["竞价1","竞价2"], biddings:{ "竞价1":[ { phone:"13600000000", price: "12" }, { phone:"15600000000", price: "10" } ], "竞价2": [ { phone:"13600000000", price: "10" }, { phone:"15600000000", price: "12" }, { phone:"13800000000", price: "10" } ] } } };
第二种数据结构感觉起来就比较聪明一些,给每一个活动加了一个链接,例如:activities["1"],就可以直接通过“1”来找到“1”对应的活动的信息,这样做的好处是不用遍历活动的所有信息来匹配我们要的某一个活动,只需要找到这个活动是不是“0”或者“1”对应的那个活动。另外不同于第一种数据结构的地方就是将biddings从bids中提了出来,不再嵌套在bids里面,虽然每开一次竞价,就要向两个数组中添加元素,但是在查询竞价信息时却是很方便的,我们可以通过遍历bids知道每一个活动下有哪一些竞价,通过遍历biddings知道每一个竞价下的竞价信息。
第三种数据结构:
activities = [ { id:"0", name: "first activity" }, { id:"1", name: "second activity" } ]; sign_ups = [ { name:"仝键", phone:"13600000000", activity_id:"0" }, { name:"于硕", phone:"15600000000", activity_id:"0" }, { name:"吴京川", phone:"13800000000", activity_id:"0" }, { name:"仝", phone:"13600000000", activity_id:"1" }, { name:"于", phone:"15600000000", activity_id:"1" }, { name:"吴", phone:"13800000000", activity_id:"1" } ]; bids = [ { name: "竞价1", activity_id:"0", biddings:[ { phone:"13600000000", price: "9" }, { phone:"15600000000", price: "10" } ] }, { name: "竞价1", activity_id:"1", biddings:[ { phone:"13600000000", price: "12" }, { phone:"15600000000", price: "10" } ] }, { name: "竞价2", activity_id:"1", biddings:[ { phone:"13600000000", price: "10" }, { phone:"15600000000", price: "12" }, { phone:"13800000000", price: "10" } ] } ];
第三种数据结构的嵌套是最少的,活动单独是一组数据,报名信息是一组数据,竞价信息又是一组数据。存储活动时,给每一项活动加一个id,方便报名和竞价时查找,sign_ups数组有三个属性:name,phone,activity_id,用户报名时,我们将用户的名字和电话号码匹配给正在进行报名的活动的id,此时,id就成为了连接活动和报名信息的key,通过活动对应的id,我们就可以轻松找到此id下所有报名者的信息。同样,每一个活动可以有不止一个竞价,每一次竞价开始,都会对应一个活动。所以,我们同样可以给bids添加activity_id这个属性,加上竞价本身的名字name,和此竞价下的竞价者信息。每一次竞价下都有多个竞价者信息,包括竞价者的电话号码phone和竞价价格price。所以第三种数据结构只用到了一个嵌套。
每一种数据结构都有其优势,第一种的逻辑非常清楚,每一个数据与其他数据之间的关系很容易就观察出来,但是实际操作的时候也是最麻烦的,因为涉及很多嵌套,所以需要遍历很多次,挨层找到符合条件的数组。第二种数据结构加了一个键值,并且将biddings提出与bids分隔开来,这样的好处是,在遍历数组时,我们同样可以快速得到我们想要的结果,但是我们必须通过一个属性值来匹配相关联的内容,比如biddings中name必须匹配bids中的竞价名称。第三种数据结构嵌套是最少的,这种做法损失了逻辑上的上下级关系,所以必须通过键值关联相关的内容,但是当我们使用数据时就不用逐层查找,比如我们要找到某一个竞价者的出价,只需要在bids中找到activity_id和name匹配的竞价,遍历此竞价,通过phone就能查到数据。
个人还是比较偏好通过第二种给每一项活动键值的方式,快速查找匹配的活动。另外,通过重写三种数据结构的方式,也让我对之前自己做的数据结构有了一个新的认识,同样的功能可以有很多种实现的方式,尝试不同的方式可以加深自己对项目的理解,找到最优的数据结构,不仅更好的实现功能,还可以减轻自己很多的工作量。而通过测试来实现代码,让我加深了测试的理解,利用测试的方式小步前进,可以清楚得知道自己每一步在干什么,整体上的思维也很清晰在测试中展现出来。
相关推荐
数据格式 uid_score_bid 如 dingdanglbh,4.0 ,25862578 Luna-cat,5.0 ,25862578 aiyung,5.0 ,25862578
9点潮流计算PSO的优化算法 很简单,只要在MATLAB运行就可以
欧美1分钟历史数据,2003年5月到2019年2月,MT4EA回测好用。
Repaso_Clases_Objetos_call_aplly_bid_22_02_2021
去噪代码 matlab
bid0-lid64-steam.game_steamzc9_2.0.0.2702.exe.file
bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe
mc_bid
crc-16的编码,使用的多项式是G(x)=x^16+x^12+x^5+1
backup_1000821v1001400000.zip
bid0-lid64-steam.game_steamzc_2.0.0.2242.exe
Bid Documents - Toyota Hilux Fx
附加服务器 欢迎使用Addons Server存储库! 请随时访问托管的当前项目的网页。 如果要安装,请遵循 指南。 我们希望您的帮助! 如果您有任何疑问,可以通过与我们联系。 请在此处报告错误: : 或您可以通过访问AMO...
出价统计信息和详细信息 作为签约过程一部分而...bids.details数组用于提供一个或多个Bid对象,每个对象代表收到的唯一出价。 bids.statistics数组用于表示有关投标和投标者数量的关键统计信息。 数组中的每个条目都
VHDL语言编写,实现双向移位寄存器功能,在MAX+plus软件下实现
一种基于即插即用方法的适应类盲图像去模糊方法。 %================================================= ===================% [1]和[2]中的适用于类的BID方法的MATLAB DEMO。 该方法基于即插即用(PnP)框架。 ...
为什么使用简单有效的二进制文件格式:密集刻度格式(DTF) 存储形状为:( (timestamp, seq, is_trade, is_bid, price, size)订单簿(timestamp, seq, is_trade, is_bid, price, size)数据元组。 按时间戳+ seq排序...
bid格式招投标文件阅读器,可以打开浏览、管理电子招标文件,如果打不开标书文件,请按下面步骤检查:1、请查看招标文件(.bid文件)是否下载完全,请用IE下载工具下载;2、查看IE浏览器版本,如果版本低于IE8,低于IE...
为了设计一个网上拍卖系统,需要想到有拍卖系统的客户、广告和时间,相对应的应该有客户...因此,我们需要考虑到以下9个类:Client、Advertisement、Date、Group、Listing、Category、Categories、Bidhistory以及Bid。
kp guide on how to use the kp tools