【问题标题】:How to get the first element of Set in ES6 ( EcmaScript 2015)如何在 ES6 中获取 Set 的第一个元素(EcmaScript 2015)
【发布时间】:2025-12-03 20:40:01
【问题描述】:

在 ES6 中,我们如何快速获取元素?

MDN Syntax for Set,我没有找到答案。

【问题讨论】:

  • 你认为“第一”是什么?

标签: javascript ecmascript-6


【解决方案1】:

他们似乎没有将列表公开为可从实例化对象访问。这是来自 EcmaScript 草案:

23.2.4 集合实例的属性

Set 实例是从 Set 原型继承属性的普通对象。 Set 实例也有一个 [[SetData]] 内部槽。

[[SetData]] 是 Set 所持有的值的列表。

一个可能的解决方案(一个有点昂贵的解决方案)是获取一个迭代器,然后调用next() 获取第一个值:

var x = new Set();
x.add(1);
x.add({ a: 2 });
//get iterator:
var it = x.values();
//get first entry:
var first = it.next();
//get value out of the iterator entry:
var value = first.value;
console.log(value); //1

也值得一提:

Set.prototype.values === Set.prototype.keys

【讨论】:

  • 顺便说一句,迭代器被认为是非常in昂贵的,这种方法非常理想......
  • 并不是说迭代器是次优的或昂贵的,只是如果你创建一个迭代器只是为了抓住列表的第一个元素,那么这听起来很昂贵,而不是仅仅访问直接元素。
  • 或一行中的set.values().next().value
  • 为什么 javascript 不提供在集合中查找特定元素的方法?有什么合理的理由吗?
  • 另一条线:[...theSet][0]
最近更新 更多