一尘不染

如何将普通对象转换为ES6地图?

javascript

由于某种原因,我无法在MDN文档中找到这个简单的东西(也许我只是想念它)。

我希望这可以工作:

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

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

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

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


阅读 320

收藏
2020-05-01

共1个答案

一尘不染

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

Object.entries是ES2017(19.1.2.5)中可用的新的Object静态方法。

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

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

如果您需要支持较旧的环境,并且不适合使用Transpilation,请使用polyfill,例如georg建议的方法:

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