ES7 中的 Object.fromEntries 方法,高效实现对象转为 Map
JavaScript 是一门非常灵活的语言,其灵活性来源于其对象模型的优美设计。其中一个最重要的特性就是对象的键值对组合。在很多情况下,用对象作为存储和传递数据的方式,是很方便和简洁的。但是有些情况下,我们需要用到 Map 类型的数据结构,例如需要对键进行排序或者需要使用 Map 的一些特殊的方法。这时候,我们就需要将对象转化为 Map。
在 ES6 中已经提供了手动实现的方式:
const obj = {a: 1, b: 2, c: 3}; const map1 = new Map(Object.entries(obj)); console.log(map1); // Map(3) { 'a' => 1, 'b' => 2, 'c' => 3 }
需要将对象的键值对转化为数组形式,再利用 Map 构造函数来创建 Map 对象。
在 ES7 中,我们可以使用 Object.fromEntries 方法,更加便捷的实现对象转为 Map 的操作。该方法接收一个二维数组作为参数,其中每一维数组的第一项为键,第二项为值,从而返回一个 Map 对象。
const obj = {a: 1, b: 2, c: 3}; const map2 = new Map(Object.entries(obj)); const map3 = new Map(Object.fromEntries(Object.entries(obj))); console.log(map2); // Map(3) { 'a' => 1, 'b' => 2, 'c' => 3 } console.log(map3); // Map(3) { 'a' => 1, 'b' => 2, 'c' => 3 }
在上面的例子中,我们可以看到两种方式创建 Map 对象的结果都是一样的。
Object.fromEntries 方法不仅可以将对象转化为 Map,还可以将二维数组转化为对象。
const arr = [['a', 1], ['b', 2], ['c', 3]]; const obj1 = Object.fromEntries(arr); const obj2 = Object.fromEntries(new Map(arr)); console.log(obj1); // { a: 1, b: 2, c: 3 } console.log(obj2); // { a: 1, b: 2, c: 3 }
上述代码中,我们同样可以通过 Object.fromEntries 方法将数组转化为对象,其中每一维数组的第一项为键,第二项为值。
总的来说,ES7 中增加的 Object.fromEntries 方法提供了一种简洁高效的方式,用于将对象转化为 Map 格式,并且将二维数组转化为对象的过程也更加方便。
希望本文对大家的学习和实践有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6782cbc1935627c9001cfab0