重构完成后做了一下三种数据结构,理解各种存储方式的优缺点.
第一种数据结构
var two_activities = [{
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"
}
]
},
]
}];
第一种数据把所有的数据存储到一个数组里,结构清晰,取数据也方便,但是取数据的时候需要经过多个for,和if的循环嵌套比较繁琐,如果数据较少的话可以这样存取,数据量大的话不推荐
2.第二种数据结构(哈希表)
var two_activities = {
"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"
}
],
}
}
};
第二种数据结构采用哈希表的方式存储,所有数据存储在activities中,每个活动都分配一个对应的id.结构清晰,存取也较为方便 举个例子,检查是否报名电话重复
check_bid_phone_repeat = function (sms_json) {
var activities = JSON.parse(localStorage.getItem("activities"));
var apply_phone = sms_json.messages[0].phone
var activity = activities[localStorage.current_activity_id].biddings[localStorage.current_bid]
return( _.find(activity, function (act) {
return act.phone == apply_phone
}))
}
3.第三种数据结构
var bids = [
{
name: "竞价1",
activity_id: "1",
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"
}
]
第三种数据结构每个信息存储成一个数组,存储数据的时候特别方便,结构不是很清晰,取相应数据的时候需要逻辑判断,并且存数据的是个个个表之间要有联系.
三种数据结构各有利弊,就个人而言感觉第二中和第三种比较方便,用第三种的时候逻辑一定要清楚