Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种算法可以在保留O(1)插入/删除的同时保证收款顺序?_Javascript_Algorithm_Sorting - Fatal编程技术网

Javascript 是否有一种算法可以在保留O(1)插入/删除的同时保证收款顺序?

Javascript 是否有一种算法可以在保留O(1)插入/删除的同时保证收款顺序?,javascript,algorithm,sorting,Javascript,Algorithm,Sorting,Javascript的对象属性应该没有顺序,但在大多数浏览器实现中,它似乎是按插入顺序排序的 他们如何在不插入/删除对象属性O(log n)的情况下实现这一点?什么样的簿记/算法可以实现这一点 或者,它们只是在属性数量较少时才跟踪插入顺序?一种方法是从哈希表开始,并创建指向哈希表中键值对的双链接指针列表。插入项目时,请将其添加到双链接列表的尾部。删除项目时,请将其从双链接列表中删除。您可以选择完全忽略对现有键的写入,或者将它们视为先删除后插入。当您需要遍历键-值对时,请沿着双链表从头到尾移动。插

Javascript的对象属性应该没有顺序,但在大多数浏览器实现中,它似乎是按插入顺序排序的

他们如何在不插入/删除对象属性O(log n)的情况下实现这一点?什么样的簿记/算法可以实现这一点


或者,它们只是在属性数量较少时才跟踪插入顺序?

一种方法是从哈希表开始,并创建指向哈希表中键值对的双链接指针列表。插入项目时,请将其添加到双链接列表的尾部。删除项目时,请将其从双链接列表中删除。您可以选择完全忽略对现有键的写入,或者将它们视为先删除后插入。当您需要遍历键-值对时,请沿着双链表从头到尾移动。

插入顺序只是推到堆栈上(添加到数组中),一点也不复杂。@Blindman67您仍然需要维护它:如果删除了键,您将如何从堆栈/数组中删除相应的值?“删除项时,请将其从双链接列表中删除。”---如何在
O(1)
中执行此操作?在哈希表中,与值一起存储指向指向该键值对的列表节点的指针。