为了能够更加熟悉JavaScript这种语言的存储方式,于是就进行了三种数据结构的强化训练,从中了解三种数据结构的优缺点,以便能够找到合适的存储方式来实现项目的开发。
第一种数据结构的存储方式如下:
activities = [
{
name: "first activity",
sign_ups:[],
bids:[]
},
{
name: "first 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"
}
]
}
]
}
];
对于这种数据结构的存储方式,我感觉这种数据结构的嵌入太深,这种存储方式是一层嵌一层的形式,能够很容易的看出整个工程的存储形式,可以很容易的看出活动下的各种数组的存储,但是由于这种存储方式需要,对于小型的存储来说,能够很好的实现,但对于较大项目来说,这种方式嵌套太多,工作量大,在存取方面需要更多繁琐的操作。
为了取出较深层次的数组,需要多个_.find方法来实现这一存取,代码可如下所示:
var working_activity = _.find(jj_list,function(working){return working.name == localStorage.current_activity})
var working_name = _.find(working_activity.sign_ups,function(currenting){return currenting.phone == bid_phone})
第二种数据结构的存储方式如下:
localStorage.actity_ids = ["0","1"];
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"
}
],
"竞价2": [
{
phone:"13600000000",
price: "10"
},
{
phone:"15600000000",
price: "12"
},
{
phone:"13800000000",
price: "10"
}
]
}
}
};
相对于第一种方式来说,第二种采用哈希存储方式,通过获取需要存取数据的ID来实现对数据的存储,从而达到哈希存储的方式,哈希存取的代码如下:
var bm_jj_get = {phone: bid_phone,price: bid_price}
jj_list[localStorage.current_activity_id].biddings[localStorage.current_bid].unshift(bm_jj_get)
localStorage.setItem("activities",JSON.stringify(jj_list))
这种存取相对简单一些,只是逻辑方面可能需要花大量的功夫。
第三种数据结构的存储方式如下:
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进行标示,来实现数组之间的联系。存储数据挺方便的,但是这种数据结构获取数据时,还需要进行逻辑的选择,以便获取想要取出的数据。
我在做party_bid时,使用的是第一种数据结构,在重构的时候,感觉逻辑上比较混乱,东西都不知道如何存取,因而我感觉就一个小项目party_bid的数据存储都有些混乱,所以我感觉第二种和第三种存取的方式相对较好一些,在以后的学习、工作中,我将会更多的使用第二和第三种数据结构。