MDN documentation for Set表示JavaScript Set
对象保留元素的插入顺序:
集合对象是值的集合,可以按插入顺序迭代其元素。
有没有办法把最后一个项目插入到Set
对象中?
var s = new Set();
s.add("Alpha");
s.add("Zeta");
s.add("Beta");
console.log(getLastItem(s)); // prints "Beta"
- 编辑 *
可以实现一个Linked Set数据结构容器类,它具有与Set
相同的接口,并且具有所需的功能。
7条答案
按热度按时间vkc1a9a21#
我无法从ECMA 2015规范中找到任何方法来获取插入到集合中的最后一个值,可能他们从未打算使用这样的方法,但您可以这样做:
再想想,节省空间的解决方案可能是:
i1icjdpr2#
一些想法:
如果确实需要一个集合,可以在提取最后一项时将其转换为数组,但这会耗费时间和空间。
Set
添加此新功能:注意,这只会检测用
add
添加的值。为了更完整,它还应该在构造集合时检测最新的值,并在删除最后一项时更新该值。nkkqxpd93#
是的,有一种方法可以做到这一点,您可以简单地将集合转换为数组并弹出最后一项
要获取键/值等,您可以执行以下操作
如果你不想创建一个数组,你可能需要迭代并得到最后一个值,如下所示
FIDDLE
iyfjxgzm4#
只是另一种方法。
13z8s7eq5#
我已经创建了
Set
的替代品,它使用底层Map
重新实现集合的链接功能。l7wslrjt6#
没有访问最后一项的方法,但您可以按如下所示进行访问
to94eoyn7#
一个简单的解决方案,但
O(N)
: