随机试验JavaScript(ES6)并阅读其文档,我发现Set
保持其元素的插入顺序。
我想知道这个决定的依据是什么?我一直认为集合是无序集合。需要更多的东西将导致实现成本更高,而在我看来,此功能几乎未使用。
答案 0 :(得分:2)
有序集非常有用,例如:
unique_elements_in_order = [...new Set(some_array)]
在像python这样的“未排序集”语言中,您需要一个单独的OrderedSet
实现才能起作用。
是的,从理论上讲,集合不是有序的,但是数学抽象(例如集合,函数,数字等)仅与我们在编程中使用的类似命名的对象切向相关。 Set
只是一种特殊的数据结构,由语言设计者来定义其特定的属性,例如“集合按插入顺序”或“集合只能包含可哈希对象”等。
关于委员会的动机,一些谷歌搜索带来了this
马克·米勒:
2012年2月13日星期一22:31:28 PST
确定性有很多好处。 E以不确定性开始 迭代顺序,这会带来隐性通道危害。我最初改变了 确定性顺序仅仅是为了解决此漏洞。这样做后,我发现了它 有很多软件工程上的好处。例如,它变得容易得多 编写回归测试并通过重新执行来重现错误。在我的 实施中,它还具有较小的额外空间和时间成本。泰勒的 Waterken表显示即使我支付的较小的运行时成本也
为了让我们不再介绍不确定性的另一个来源 不可估量的效率。让我们来衡量一下,如果成本结果是 毕竟很高,然后让我们重新考虑确定性。
我相信这完全可以回答您的问题(阅读整个主题,很有趣!)