三种数据结构

为了能够更加熟悉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的数据存储都有些混乱,所以我感觉第二种和第三种存取的方式相对较好一些,在以后的学习、工作中,我将会更多的使用第二和第三种数据结构。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值