`object.keys()` 无法获取 `map` 实例的键,因为 `map` 不是普通对象,其键值对不作为自有属性暴露;应使用扩展运算符 `...map.entries()` 获取键值对数组后再映射。
在 JavaScript 中,Map 是一个独立的数据结构,并非基于普通对象实现,因此它不继承 Object.prototype 的属性和方法。Object.keys() 只能枚举对象自身的可枚举字符串属性名,而 Map 的键值对存储在内部槽(internal slots)中,并不会变成对象属性——所以 Object.keys(map1) 永远返回空数组 [],这也是你看到 'Keys are []' 的根本原因。
要正确遍历 Map 并生成结构化数据(如 { label, value } 对象数组),推荐使用 Map.prototype.entries() 配合扩展运算符:
const map1 = new Map();
map1.set('111020022AS', true);
map1.set('23t2t363114', false);
map1.set('110AI1123333', true);
map1.set('0000111222', false);
// ✅ 正确:获取 [key, value] 元组数组,再 map 转换
const newArray = [...map1.entries()].map(([label, value]) => ({
label,
value
}));
console.log(newArray);
// 输出:
// [
// { label: '111020022AS', value: true },
// { label: '23t2t363114', value: false },
// { label: '110AI1123333', value: true },
// { label: '0000111222', value: false }
// ]? 补充说明:
⚠️ 注意事项:
ray.from(map1.entries()) 替代。掌握 Map 的原生迭代方法,是写出健壮、可维护集合操作代码的关键一步。