【发布时间】:2014-10-02 07:53:56
【问题描述】:
我正在寻找一种方法来获取一堆 JSON 对象并将它们存储在允许快速查找和快速操作的数据结构中,这可能会改变特定对象在结构中的位置。
一个示例对象:
{
name: 'Bill',
dob: '2014-05-17T15:31:00Z'
}
给定按名称升序和 dob 降序排序,您将如何存储对象,以便如果我有要插入的新对象,我很快就知道在数据结构中放置它的位置,以便对象的位置是根据其他对象排序?
在查找方面,我需要能够说“给我索引 12 处的对象”并且它会快速拉出它。
我可以修改对象以包含有用的数据,例如将当前索引位置等存储在属性中,例如{_indexData: {someNumber: 23, someNeighbour: Object}} 虽然我不想这样做。
我查看了 b-trees 并认为这可能是答案,但不确定如何使用多个排序参数(名称:升序,dob:降序)来实现,除非我实现了两棵树?
谁有解决这个问题的好办法?
【问题讨论】:
-
假设你不添加索引属性,你怎么知道在获取记录时使用什么索引?
-
@Johan 在插入点我想我需要它给出的索引,所以如果我插入 a、c 和 b,a === 索引 0,b === 1 和 c = == 2. 或者,在插入之后,如果结构可以展平为数组,我可以执行 indexOf() 来查找当前索引,尽管这将使用线性搜索,因此效率不高。
-
如果您真的关心查找复杂性,我认为以索引为键的普通对象将比数组上的
indexOf、for等更快。
标签: javascript json sorting indexing