在 ECMAScript 2019 中,新增了一个 Object.fromEntries 方法,在实际开发中,我们可以用它来实现 Map 和 Object 之间的转换。这个方法的本质就是将一个键值对数组转换为一个对象,具体用法和实现效果如下所述。
Object.fromEntries 的用法
Object.fromEntries 的语法如下:
Object.fromEntries(iterable)
其中,iterable 参数应该是一个可迭代对象,每个不同键值对应一个键值对数组。这个方法将这个可迭代对象中的所有键值对都转换为一个由键值组成的对象。
Map 到 Object 的转换
Map 是一种键值对的存储方式,它本质上也是一个可迭代对象。我们可以通过调用 Map 的 entries() 方法来获取一个包含键值对数组的可迭代对象,然后再将这个可迭代对象传入 Object.fromEntries() 方法中即可实现从 Map 到 Object 的转换。
举个例子:
const map = new Map([['name', 'Lucy'], ['age', 18], ['gender', 'female']]); const obj = Object.fromEntries(map.entries()); console.log(obj); // { name: 'Lucy', age: 18, gender: 'female' }
在上述代码中,我们首先创建了一个 Map 对象,然后调用了它的 entries() 方法获取到一个键值对数组的可迭代对象。接下来,我们再将这个可迭代对象传入 Object.fromEntries() 中,从而将这个键值对数组转换为一个由键值组成的对象。
Object 到 Map 的转换
与从 Map 到 Object 的转换类似,我们同样可以通过 Object.entries() 方法来获取一个包含键值对数组的可迭代对象,然后再将这个可迭代对象传入 Object.fromEntries() 方法中,从而实现从 Object 到 Map 的转换。举个例子:
const obj = { name: 'Lucy', age: 18, gender: 'female' }; const map = new Map(Object.entries(obj)); console.log(map); // Map { 'name' => 'Lucy', 'age' => 18, 'gender' => 'female' }
在上述代码中,我们首先创建了一个包含键值对的对象,然后调用了 Object.entries() 方法获取到一个键值对数组。接下来,我们将这个键值对数组传入 Map 构造函数中,从而将这个数组转换为一个 Map 对象。
总结
通过 ECMAScript 2019 中的 Object.fromEntries 方法,我们可以实现 Map 和 Object 之间的快速转换。同时,这个方法的使用方式也非常简单,只需要将一个键值对数组作为参数传入即可。如果你还没有接触过它的话,不妨尝试一下,相信对你的开发效率会有很大的提升。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6517d5d295b1f8cacdffb587