`
快乐蓝海
  • 浏览: 4141 次
  • 性别: 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的数据存储都有些混乱,所以我感觉第二种和第三种存取的方式相对较好一些,在以后的学习、工作中,我将会更多的使用第二和第三种数据结构。

 

分享到:
评论

相关推荐

    大二上的数据结构课设,采用python实现一个包含三种数据结构的英汉词典,

    大二上的数据结构课设,采用python实现一个包含三种数据结构的英汉词典,用三种数据结构分别存储以及_-Compact-English-Chinese-Dictionary

    数据结构实验报告(顺序存储、链式存储、二叉树,共三份).docx

    以下是这三种数据结构的详细解释和实验过程。 1. **顺序存储结构的线性表实现** - **问题描述**:顺序存储结构是指数据元素在内存中按照其逻辑顺序依次存储。线性表是最基本的数据结构之一,包括插入、删除和查找...

    三种线性数据结构的实现

    在这个压缩包中,包含的是三种基本线性数据结构的实现:线性表、栈和队列,每种都有数组和链式两种常见方式的实现。接下来,我们将深入探讨这些数据结构及其在C++中的实现。 1. **线性表**: - **数组实现(AList....

    数据结构代码 栈 链表 队列

    压缩包中的代码可能涵盖了这三种数据结构的基本操作实现,例如用C++、Java或Python等语言编写。通过学习和实践这些代码,你可以深入了解数据结构的工作原理,并提升编程能力。同时,理解这些基本数据结构对于学习和...

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

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

    数据结构源码

    数据结构是计算机科学中的核心概念,它涉及到如何有效地组织和管理数据,以便于高效地进行...在压缩包中的"3.ds"文件中,很可能是包含了关于这三种数据结构的详细讲解和源码示例,对于学习和巩固这些知识非常有帮助。

    数据结构和算法分析 C++版 第三版

    算法分析可以分为Best Case、Worst Case和Average Case三种,分别对应算法在最优、最坏和平均情况下的性能。算法分析的结果可以用来选择合适的算法和数据结构,以提高程序的性能和效率。 数学预备知识 数学预备...

    数据结构_顺序表_单链表_循环链表C#

    下面将详细阐述这三种数据结构及其在C#语言中的实现。 首先,顺序表是一种线性数据结构,它在内存中以连续的存储单元存储元素。在C#中,我们可以使用数组来实现顺序表。数组提供了快速访问元素的能力,因为可以通过...

    李云清数据结构第三版C语言版课后答案

    例如,栈和队列就是两种不同的ADT,虽然它们的逻辑结构和存储结构可能相同,但由于运算集合(入栈、出栈、入队、出队)不同,所以是两种独立的数据结构。 3. 算法是解决问题的精确步骤,它有五个关键特性:有限性...

    数据结构(C语言版)第三版__清华大学出版社_习题参考答案分享.pdf

    * 树结构:是一种数据结构,用于存储一组有层次关系的数据元素。 * 图结构:是一种数据结构,用于存储一组有关系的数据元素。 本资源涵盖了数据结构的基本概念、算法和程序设计、时间复杂度和空间复杂度、数据结构...

    数据结构实验一、二、三实验报告

    在实验报告中,学生应该清楚地解释每种数据结构的工作原理,展示他们的代码实现,包括关键函数的详细注释,并分析其运行效率。此外,学生还应反思实验过程中的困难和挑战,以及如何克服这些问题。最后,通过对比不同...

    《数据结构(C++语言版)第三版_邓俊辉》

    《数据结构(C++语言版)第三版_邓俊辉》是一本深受欢迎的教材,它专为学习数据结构和算法的计算机科学与技术学生及专业人士设计。这本书由邓俊辉教授编写,以其清晰的讲解风格和丰富的实例而闻名。第三版在前两版的...

    算法与数据结构

    维尔特特别强调了数组、记录和集合这三种数据结构。数组是一种线性结构,可以存储相同类型的数据集合,而记录则是一种复合数据类型,可以存储不同类型的数据。集合是由无序的元素构成的集合类型。书中详细讨论了这些...

    数据结构(唐发根)

    3. **栈与队列**:栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。队列是先进先出(FIFO)的数据结构,适用于任务调度、打印队列等。 4. **树形结构**:树是层次化的数据结构,包括二叉树...

    数据结构教程第三版 李春葆

    《数据结构教程第三版》由李春葆编写,是一本广泛使用的教材,涵盖了数据结构的基础理论和实践应用。本书不仅提供了详细的概念解释,还配以丰富的习题,帮助学生巩固所学知识。 1. **数组**:数组是最基本的数据...

    王红梅数据结构答案.pdf

    从逻辑关系上讲,数据结构主要分为集合、线性结构、树结构和图结构四种。顺序存储结构和链接存储结构是两种基本的数据存储方法,不论哪种存储结构,都要存储两方面的内容:数据元素和数据元素之间的关系。 3. 算法...

    数据结构与算法分析–C++描述(第3版 )

    通过对这三种数据结构的学习,读者可以了解到如何有效地管理和访问数据,以及如何根据具体应用场景选择合适的数据结构。 #### 总结 《数据结构与算法分析–C++描述》是一本非常适合初学者和进阶读者使用的教材。...

    数据结构的pdf课件

    栈是一种后进先出(LIFO)的数据结构,常用于表达式求值和递归;队列则是先进先出(FIFO)的结构,常见于任务调度。树(如二叉树、平衡树)和图则用于表示复杂关系,如搜索和遍历问题。 4. **排序和查找**:课件会...

Global site tag (gtag.js) - Google Analytics