javascript - 如何将普通对象转换为 ES6 Map?

标签 javascript ecmascript-6

出于某种原因,我在 MDN docs 中找不到这个简单的东西(也许我只是想念它)。

我希望它能工作:

const map = new Map({foo: 'bar'});

map.get('foo'); // 'bar'

...但是第一行抛出 TypeError: (var)[Symbol.iterator] is not a function

如何从普通对象制作 map ?我真的必须先将其转换为键值对数组吗?

最佳答案

是的,Map 构造函数采用键值对数组。

Object.entriesES2017 (19.1.2.5) 中可用的新对象静态方法.

const map = new Map(Object.entries({foo: 'bar'}));

map.get('foo'); // 'bar'

It's currently implemented in Firefox 46+ and Edge 14+ and newer versions of Chrome

如果您需要支持较旧的环境并且转译不适合您,请使用 polyfill,例如 georg 推荐的那个:

Object.entries = typeof Object.entries === 'function' ? Object.entries : obj => Object.keys(obj).map(k => [k, obj[k]]);

关于javascript - 如何将普通对象转换为 ES6 Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36644438/

相关文章:

javascript - 如何对对象数组进行分组和排序

javascript - 播种 javascript 回调

javascript - 悬停时元素焦点

javascript - Magento:类型错误:N 不是函数

javascript - 使用元素 id 单击页面其他部分时隐藏 div

javascript - 如何使用 JS 将字符串替换为图像

javascript - 如何通过多个条件过滤数组但保持其当前状态?

javascript - 为什么我不能将其转换为自定义 React hook?

angular - 为什么在添加输入类型 `url` 后 Angular 会抛出错误

javascript - 使用 VanillaJS 从执行的字符串创建脚本元素