map.prototype.values()返回值迭代器,可用for...of遍历或转为数组操作;顺序严格按插入顺序,不受键类型影响;相比object.values(),它更可靠且支持任意键值类型。

Map.prototype.values() 方法用于获取 Map 实例中所有值的迭代器(Iterator),它返回的是一个 MapIterator 对象,不是数组,但可以配合 for...of、扩展运算符([...map.values()])或 Array.from() 转为数组使用。
直接遍历 values 迭代器
最常用的方式是用 for...of 循环逐个访问值:
const myMap = new Map([
['a', 100],
['b', 200],
['c', 300]
]);
<p>for (const value of myMap.values()) {
console.log(value); // 输出:100, 200, 300
}</p>
转成数组再操作
如果需要数组方法(如 map、filter、join 等),先转为数组:
- 用扩展运算符:
[...myMap.values()] - 用
Array.from(myMap.values())
示例:
const valuesArray = [...myMap.values()]; console.log(valuesArray); // [100, 200, 300] console.log(valuesArray.map(x => x * 2)); // [200, 400, 600]
注意:values() 不受键类型影响
无论 Map 的键是字符串、数字、对象还是 Symbol,values() 只关心值本身,顺序与插入顺序一致:
const m = new Map();
m.set({}, 'objValue');
m.set(42, 'numValue');
m.set(true, 'boolValue');
<p>console.log([...m.values()]); // ['objValue', 'numValue', 'boolValue']</p>
和 Object.values() 的区别
Object.values() 只能遍历对象自身可枚举属性的值,且不保证顺序;而 Map.prototype.values() 严格按插入顺序返回所有值,且支持任意类型的键和值,语义更明确、行为更可靠。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











