在 ES9 中,新增了一个名为 Object.fromEntries()
的对象方法,用来将一个二维数组转换为一个对象。本文将详细介绍该方法的用法、示例和指导意义。
用法
Object.fromEntries()
方法接受一个二维数组作为参数,该数组的每一项都是一个包含 key 和 value 两个属性的数组,格式如下:
[ [key1, value1], [key2, value2], ... ]
Object.fromEntries()
方法将返回一个由该二维数组转换而来的对象,对象的属性由二维数组中每个子数组的第一个元素作为 key,对应子数组的第二个元素作为 value。示例如下:
-- -------------------- ---- ------- ----- --- - - ----- --- ----- --- ----- -- -- ----- --- - ------------------------ ----------------- -- --- -- -- -- -- --
请注意,如果二维数组中存在多个相同的 key,Object.fromEntries()
方法将采用最后一个 key 对应的 value。
示例
以下是几个使用 Object.fromEntries()
方法的示例:
1. 将 URLSearchParams 对象转换为普通对象
URLSearchParams
对象是用来处理 URL 参数的内置对象,可以通过 window.location.search
属性获取。默认情况下,URLSearchParams
对象无法直接转换为普通对象,但是可以借助 Object.fromEntries()
方法实现:
const searchParams = new URLSearchParams('?name=John&age=20'); const obj = Object.fromEntries(searchParams); console.log(obj); // {name: "John", age: "20"}
2. 将 Map 对象转换为普通对象
Map
对象是一种常用的键值对容器,可以通过 entries()
方法获取 Map
对象的键值对组成的迭代器。然后可以使用 Object.fromEntries()
方法将 Map
对象转换为普通对象:
const map = new Map(); map.set('a', 1); map.set('b', 2); map.set('c', 3); const obj = Object.fromEntries(map.entries()); console.log(obj); // {a: 1, b: 2, c: 3}
3. 将 FormData 对象转换为普通对象
FormData
对象是一种用来处理 HTML 表单数据的内置对象,可以将 FormData
对象转换为普通对象,而不必手动遍历 FormData
对象的所有属性和值:
-- -------------------- ---- ------- ------ ------ ----------- ----------- ------------- ------ ----------- ---------- ----------- ------- -------- ----- ---- - ------------------------------- ----- -------- - --- --------------- ----- --- - ----------------------------- ----------------- -- ------ ------- ---- ----- ---------
指导意义
Object.fromEntries()
方法的引入,可以让我们更加方便地实现某些常见的数据转换操作,例如将 URL 参数转换为普通对象、将 Map 对象转换为普通对象等。
除此之外,Object.fromEntries()
方法还可以作为不同数据类型之间转换的工具,例如可以将 Map
对象、FormData
对象等转换为普通对象,便于后续的数据操作。如果你在前端开发中需要进行这些数据类型之间的转换工作,Object.fromEntries()
方法将是一个非常实用的工具。
总结
本文详细介绍了 ES9 中新增的 Object.fromEntries()
方法的用法、示例和指导意义。该方法可以方便地将二维数组转换为对象,并且可以用来实现不同数据类型之间的转换工作。如果你在前端开发中需要进行数据转换操作,不妨尝试使用 Object.fromEntries()
方法来简化操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64707b09968c7c53b0e9b4b3