values()方法返回的是一个标准迭代器对象,具备next()方法,可直接用于for...of循环、扩展运算符或手动调用next()获取{value, done}结构的值,无需额外配合迭代器。

JavaScript 中的 values() 方法本身返回的就是一个 Iterator,所以不需要“配合” Iterator 来获取值——它**本身就是迭代器对象**。你直接调用 values(),再用 for...of、next() 或扩展运算符就能拿到所有迭代值。
什么是 values() 返回的东西?
像 Array.prototype.values()、Map.prototype.values()、Set.prototype.values() 这些方法,返回的都是一个实现了 Symbol.iterator 接口的对象,也就是标准的迭代器(Iterator)。它有 next() 方法,能按需返回 { value, done } 形式的对象。
怎么安全地取完所有值?
推荐以下几种常用方式,适用于大多数内置可迭代对象:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
for...of 循环(最常用、语义清晰):
for (const val of arr.values()) { console.log(val); } -
扩展运算符 + 数组字面量(一次性转成数组):
[...arr.values()] // → [1, 2, 3] -
手动调用 next()(了解底层机制):
const iter = arr.values();<br>console.log(iter.next()); // { value: 1, done: false }<br>console.log(iter.next()); // { value: 2, done: false }<br>// …直到 done: true
注意:values() 不是数组,不能直接用数组方法
arr.values() 返回的是迭代器,不是数组。所以不能直接写 arr.values().map(...) 或 arr.values()[0]。如果需要链式操作,先转成数组:[...arr.values()].map(x => x * 2) 或 Array.from(arr.values()).filter(...)
常见对象的 values() 行为
不同对象的 values() 含义略有不同,但都返回迭代器:
- Array:迭代每个元素值(按索引顺序)
-
Map:迭代每个
value(插入顺序) - Set:迭代每个唯一值(插入顺序)
-
String:
str.values()等价于str[Symbol.iterator](),逐字符迭代
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










