可直接用扩展运算符[...map.keys()]或array.from(map.keys())将map键转为数组;前者简洁常用,后者语义明确兼容性好;注意keys()返回单次迭代器,每次调用新建,顺序按插入顺序保证。

直接用 Array.from() 或扩展运算符([...])把 Map.prototype.keys() 返回的迭代器转成数组即可。
使用扩展运算符(推荐)
简洁直观,是目前最常用的方式:
const map = new Map([['a', 1], ['b', 2], ['c', 3]]); const keysArray = [...map.keys()]; // ['a', 'b', 'c']
使用 Array.from()
语义更明确,兼容性略好(支持所有 ES6+ 环境):
const map = new Map([['x', 10], ['y', 20]]); const keysArray = Array.from(map.keys()); // ['x', 'y']
注意点
-
map.keys()返回的是 迭代器对象,不是数组,不能直接调用.map()、.filter()等数组方法 - 迭代器只能遍历一次,多次展开会得到空数组,如:
[...map.keys()]第二次调用仍是完整键名,因为每次调用keys()都返回新迭代器 - 键的顺序与插入顺序一致,这是 Map 的规范保证
不建议的方式
避免手动循环推入数组(冗余且易错):
// ❌ 不必要地复杂
const keysArray = [];
for (const key of map.keys()) {
keysArray.push(key);
}
不复杂但容易忽略:只要记住 keys() 给的是迭代器,转数组就靠 [...] 或 Array.from() —— 其他操作都基于这个前提。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











