出于某种原因,我在 MDN docs 中找不到这个简单的东西(也许我只是想念它)。
我希望它能工作:
const map = new Map({foo: 'bar'});
map.get('foo'); // 'bar'
...但是第一行抛出 TypeError: (var)[Symbol.iterator] is not a function
如何从普通对象制作 map ?我真的必须先将其转换为键值对数组吗?
最佳答案
是的,Map
构造函数采用键值对数组。
Object.entries
是 ES2017 (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/