You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中使用Object.keys遍历Map无效问题求助

解决Map无法用Object.keys获取键并生成自定义数组的问题

你用Object.keys()获取Map实例的键是错误操作——Map是ES6专属的集合类型,不是普通JavaScript对象。Object.keys()只能遍历普通对象的自有可枚举属性,而Map的键值对存储在内部独立结构中,根本不会被Object.keys()识别,所以才返回空数组。另外你用map1[key]取值也是错的,Map必须通过map1.get(key)方法获取对应值。

下面是几种正确实现你需求的方式:

方法一:用Map的entries()方法(最直接高效)

Map的entries()方法会返回包含所有键值对的迭代器,转成数组后可直接映射成目标结构:

let map1 = new Map();
map1.set('111020022AS', true);
map1.set('23t2t363114', false);
map1.set('110AI1123333', true);
map1.set('0000111222', false);

// 直接解构键值对,生成目标数组
const newArray = Array.from(map1.entries()).map(([key, value]) => ({
  label: key,
  value: value
}));

console.log('new array is', newArray);

方法二:用keys()方法配合get()取值

如果想先获取所有键再单独取值,可以用Map自带的keys()方法:

const newArray = Array.from(map1.keys()).map(key => ({
  label: key,
  value: map1.get(key)
}));

方法三:用展开运算符简化代码

展开运算符可以直接把Map的键值对转成二维数组,再进行映射:

const newArray = [...map1].map(([key, value]) => ({
  label: key,
  value: value
}));

以上三种方法都会输出你需要的结构:每个元素都是{label: 键字符串, value: 对应布尔值}的对象数组。

内容的提问来源于stack exchange,提问作者Amax1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:02:33