`
快乐蓝海
  • 浏览: 3928 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多

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

 

分享到:
评论

相关推荐

    链表,数组,红黑树三种数据结构性能测试(Java)

    在Java中,链表、数组和红黑树是常见的数据结构,它们在不同情况下具有不同的性能表现。为了评估它们的性能,我们可以进行排序时间和性能测试。 首先,我们单独测试每个数据结构的排序时间。我们生成一个包含随机...

    数据结构与算法:语言描述(中英文)

    在无法使用二叉查找树的时候,这三种数据结构证明对查找是很有用的。他们是:AVL树、红黑树和跳跃表。 第16章讨论了图以及图的算法。图在表示许多不同的数据类型时非常有用,特别是网络的情况。最后,第17章向读者...

    三种线性数据结构的实现

    我自己写的三种线性数据结构的实现,即线性表\栈\队列的数组及链式实现

    数据结构与算法研究(强烈推荐)

    内容提要 第1章包含离散数学和递归的一些复习材料。我相信对递归做到泰然处之的惟一办法是反复不断地看一些好的用法。因此,除第5章外,递归...对来自第4章到第6章的三种数据结构以及本章介绍的斐波那契堆进行了分析。

    数据结构 二叉树三种遍历的非递归算法(背诵版).doc

    数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版).

    C++使用字典树,平衡树,散列表实现英汉字典源代码,数据结构课程设计

    对于三种数据结构的具体操作会在之后进行具体说明。用户界面采用的是C++的现成框架QT实现,QT中的大多数采用的是代码进行设计,部分才取的是ui进行设计,最后通过QT中的 connect函数 对数据结构部分和用户界面部分

    三维空间数据模型与数据结构.pptx

    三维空间数据模型与 数据结构专业:地图学与地理信息系统姓名:张小强 三维空间数据模型与数据结构全文共28页,当前为第1页。 提纲 1基本概念 2三维空间数据模型 3疑问 三维空间数据模型与数据结构全文共28页,当前...

    数据结构(C语言版 第2版)课后习题答案 严蔚敏 编著

    栈和队列是两种特殊的线性表,栈是一种后进先出的数据结构,队列是一种先进先出的数据结构。栈和队列的基本操作包括入栈、出栈、入队、出队等等。栈和队列的实现可以通过数组或链表来实现。 第四章 树和图 树是一...

    数据结构报告模板.doc

    数据结构(data structure)是带有结构特性的...简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构

    空间数据结构.pptx

    空间数据结构是数据逻辑模型与数据文件格式间的桥梁 选择一种数据逻辑模型对空间数据进行描述 一种数据结构对该模型进行表达 一种适合记录该结构的文件格式 桥梁 空间数据结构全文共82页,当前为第2页。 数据结构即...

    [详细完整版]数据结构.txt

    数据结构包括数据的逻辑结构、 数据的储存结构 和数据的运算三个方面。 2. 数据结构包括 逻辑结构 、数据的存储结构和数据的运算三个方面。 3. 在算法"正确"的前提下,评价算法主要有两个指标是:时间复杂度和 空间...

    数据结构设计与应用.doc

    逻辑结构 中图分类号:tp311.12文献标识码:a文章编号:1007-9599 (2013) 06-0000-02 1什么是数据结构 数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操 作的数据元素的集合。...

    自定义数据结构

    网上实现自定义数据结构时间接使用了其他高级的结构,本次我仅仅使用了数组实现了泛型 stack queue dictionary 三种数据结构,且实现了IEnumerable 接口。

    数据结构习题解答(C语言版)

    数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示(又称映像)。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及...

    数据结构 树、二叉树的数据结构 哈夫曼树

    2. 实现哈夫曼树数据结构,使用哈夫曼树完成如下文档的编码与译码,假设该文档由5种符号字符(A、B、C、D、E)构成 ABACDEABBCEABAACCCDEACCBAABCCCA 3. 选做:实现二叉树的中序遍历线索化数据结构 4. 选做:使用...

    数据结构在现实生活中的应用.doc

    数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分, 数据的逻辑结构,数据的存储结构和数据运算结构。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同 ...

    数据结构 存储表示 数据元素

    本章的重点是了解数据结构的逻辑结构、存储结构、数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。 需要达到<识记>层次的基本概念和术语有:数据、数据元素、数据项、数据结构。特别是数据结构的...

    数据结构二叉树三种遍历

    二叉树的三种遍历的非递归算法背诵版,关于数据结构课件总结

    数据结构高分笔记

    (3)针对近年数据结构大题的出题风格(比如算法设计题目中的三段式题目:①表述算法思想;②写出算法描述;③计算算法的时间和空间复杂度),设计了独特的真题仿造部分,让读者在复习的过程中逐渐适应不同类型的...

    严蔚敏数据结构c语言版

    光盘内容可在DOS环境下运行的以类C语言描述的“数据结构算法动态模拟辅助教学软件,以及在Windows环境下运行的以类PASCAL或类C两种语言描述的“数据结构算法动态模拟辅助教学软件”。 本书可作为计算机类专业或信息...

Global site tag (gtag.js) - Google Analytics