【发布时间】:2014-04-26 01:32:50
【问题描述】:
在我的项目中,我有一组对象(类实例),我需要通过键访问它们,但也需要按给定顺序进行排序和访问。我应该如何存储这些对象?
我可以同时拥有 Array 和 Dictionary 并手动使它们保持同步,但这是次优的(例如,当您想要删除一个对象时,您需要首先在 Array 中找到它)。
//dictionary properties
objectsDictionary[object.id] = object;
//array properties
objectsArray.sort(function)
有没有一种数据结构结合了 Array 和 Dictionary 的属性?这样的结构可以在内部不遍历数组的情况下进行调制吗?
我使用的语言是 TypeScript,但答案可能更笼统。
【问题讨论】:
-
顺序只能用数组来保证。您可以将其存储在字典中并根据键计算排序顺序
-
你的想法差不多了;带有 keys 的 properties 的 Object - keys 的 Array 带有 indicies
-
我认为您不会找到具有所有这些属性的神奇结构。以
Backbone.Collection的实现为例,它使用数组this.models以及用于键查找的对象this._byId。 -
我只是想确保我没有错过什么大事。同时使用数组和对象的问题就像我说的那样,如果你想删除一个对象,遍历数组的丑陋。
标签: javascript arrays oop dictionary typescript