写完三种数据结构有段时间了,现在说一下我的认识,三种数据结构各有优势,
1.第一种是这样的:
activities = [
{
name: "first activity",
sign_ups:[],
bids:[]
},
{
name: "second activity",
sign_ups: [ {name:"张三",phone:"13600000000"} ,{name:"李四",phone:"13600000000"}]
bids:[ {name:"竞价1", biddings :[] },{name:"竞价2",
biddings : [{name: "张三",
phone:"13600000000",
price: "10"}] }]
}
];
这种数据结构在本地存储,看起来结构比较清晰,就只需存储一个大的对象数组,每个对象由三个属性构成,这三个属性分别存储每个活动的活动名称、活动报名信息以及活动竞价信息。其中竞价信息的存储比较复杂,竞价信息的每个对象又嵌套了一个对象数组。所以对竞价信息的增删改查实现起来相对比较复杂.用到了大量的underscore。
比如要存储竞价短信的内容到本地,要像下面这样实现:
bidding.save_bid_=function(activity,phone,bid){
var bids= _.map(activity.bids, function (bid) {
if (bid.name == localStorage.current_bid) {
var bidder = new bidding(localStorage.current_name, phone, bid)
bid.biddings.push(bidder)
}
return bid
})
2.第二种数据结构是这样的:
activities = {
"0":{ name: "first activity",
sign_ups:[],
bids:[],
biddings:{} },
"1": {
name: "second activity",
sign_ups: [ {name:"张三", phone:"13600000000" }]
bids:["竞价1","竞价2"],
biddings:{
"竞价1":[ {phone:"13600000000", price: "12"},
{phone:"15600000000",price: "10"}]
"竞价2":[ {phone:"13600000000",price: "10"}]
}
}
这种存储结构外层是一个大对象,对象里面还对应存储了每个活动的id,每个活动由四个属性构成,比上一种多出一个专门用于保存竞价的数组。这样很容易在页面上渲染出竞价列表,避免了第一种数据结构的经过复杂的运算才能提取出竞价页面需要显示的数据 。这种数据结构很容易实现对其中数据元素的增删改查,用起来很方便。
3.第三种数据结构是这样的:
activities = [{id:"0", name: "first activity" },{id:"1",
name: "second activity"}]
sign_ups = [{name:"张三",phone:"13600000000",activity_id:"0"},
{name:"李四",phone:"13600000000",activity_id:"0"},
{name:"王五",phone:"15600000000",activity_id:"0"}
]
bids = [{name: "竞价1",activity_id:"0",biddings[]},
{name: "竞价1",activity_id:"1",biddings[
{phone:"13600000000", price: "12"},
{phone:"15600000000",price: "10"}]}]
这种数据结构共存了三个数组,每个数组各司其职 ,activities[]用于存储所有的活动名并且为每个活动加上惟一的标识id;sign_ups[]用于存储所有的活动报名信息并给每一条报名信息提供相应的活动id,bids[]用于存放所有的竞价信息,并表明所属的活动以及所属的竞价,相对于以上两种来说,代码上的实现显得更为简单。另外由于本地存储空间的容量限制,可以将三个数组分别存储于三个存储空间,所以这种数据结构的扩展性高于前两种。
另外,对测试的书写形式有了进一步的认识,在测试的代码结构有了一定的了解,对以后的测试编写很有帮助。
分享到:
相关推荐
数据格式 uid_score_bid 如 dingdanglbh,4.0 ,25862578 Luna-cat,5.0 ,25862578 aiyung,5.0 ,25862578
标题中的"case9_bid.rar_PSO_PSO power_PSO 潮流_case9_pso power flow"揭示了这个压缩包文件包含的是一个关于电力系统潮流计算的案例,使用了粒子群优化(PSO, Particle Swarm Optimization)算法。PSO是一种基于...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测技术。在本文中,我们将深入探讨CRC-16,特别是与CCITT标准相关的实现,以及它在Verilog硬件描述语言中的应用。 标题中的...
C++是一种强大的、面向对象的编程语言,特别适合处理复杂的算法和数据结构。 1. **C++语言基础**: C++提供了丰富的特性,包括类、模板、异常处理、命名空间等。在这个项目中,我们可能会看到类的使用来封装数据和...
欧美1分钟历史数据,2003年5月到2019年2月,MT4EA回测好用。
该招标项目前端设计源码采用JavaScript编写,包含280个文件,涵盖177个JavaScript文件、26个CSS文件、24个HTML文件、22个Java文件以及少量地图、JSON、图像、XML等文件。整个项目旨在打造一个功能完善、界面美观的...
"mc_bid"通常在IT行业中指的是“Multi-Channel Bid”,这是一种广告投放策略,特别是在数字营销领域,用于优化广告在多个渠道上的出价。这个概念主要应用于程序化广告(Programmatic Advertising),通过自动化的...
标题 "Repaso_Clases_Objetos_call_aplly_bid_22_02_2021" 暗示这是一个关于回顾类与对象、`call` 和 `apply` 方法以及可能涉及到的 JavaScript 语言特性的教程或复习资料。描述部分的信息较为简单,与标题相同,...
例如,`advertisement.cpp`可能涉及广告展示的优先级队列,`client.cpp`可能涉及到客户信息的散列表存储,`bidhistory.cpp`可能包含投标历史的链表或树结构,而`bid.cpp`可能涉及到投标出价的堆数据结构。...
在拍卖系统中,可能需要以下几种主要的数据结构: 1. **链表**:用于存储动态拍卖商品列表,因为新商品可能会随时添加或删除。 2. **队列**:可以用于处理用户的出价请求,确保按照时间顺序公平处理。 3. **栈**:...
bid0-lid64-steam.game_steamzc9_2.0.0.2702.exe.file
bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe
标题“bid_shift_reg.rar_plus”暗示我们关注的焦点是一个与数字电路设计相关的项目,特别是使用VHDL(Very High-Speed Integrated Circuit Hardware Description Language)编写的双向移位寄存器。在电子工程领域,...
去噪代码 matlab
总结起来,这个“backup_1000821v1001400000.zip”压缩包可能包含了一个陌陌应用或系统的备份数据,其中`verify.json`和`config.json`文件提供了备份验证和应用配置信息,而`verify.sign`和`verify.signature`则保证...
### ECSHOP 数据结构、表结构与数据库设计详解 #### 概述 ECSHOP是一款基于PHP语言的开源网上商店系统,具有丰富的功能和良好的用户体验。本文将详细介绍ECSHOP v2.7.2版本中的数据结构、表结构以及数据库设计等...
在IT领域,PDF(Portable Document Format)是一种广泛使用的文档格式,用于保存内容,确保在不同设备和操作系统上的一致显示。它通常包含文字、图像、表格等元素,并且可以进行安全保护,防止未经授权的编辑或复制...
在《数据结构课程设计总结报告》中,第一章详细阐述了需求分析。这一阶段的目标是理解系统规格说明,包括拍卖管理系统的功能和性能要求,如用户管理、拍卖物品分类、出价记录、时间管理等。同时,需求分析还需要与...
bid0-lid64-steam.game_steamzc_2.0.0.2242.exe