在 ECMAScript 2015 中引入的 Object.entries 方法可以将一个对象转换为一个键值对数组,而在 ECMAScript 2021 中新增了 Object.fromEntries 方法,可以将一个键值对数组转换为一个对象。本文将详细讲解 Object.fromEntries 方法的用法、优点和应用场景。
用法
Object.fromEntries 方法接受一个键值对数组作为参数,返回一个由该数组中的键值对创建的新对象。键值对数组的每个元素都是一个由两个元素组成的数组,第一个元素是键,第二个元素是值。
----- ------- - ------ --- ----- --- ----- ---- ----- --- - ---------------------------- ----------------- -- --- -- -- -- -- --
优点
Object.fromEntries 方法的优点在于它可以快速将一个键值对数组转换为一个对象,同时还可以避免手动创建对象的过程。在实际开发中,我们经常需要将一个键值对数组转换为一个对象,比如解析 URL 查询字符串或 JSON 字符串,或者将一个表单中的数据转换为一个对象等等。
应用场景
解析 URL 查询字符串
URL 查询字符串中的参数通常是以键值对的形式出现的,可以通过 URLSearchParams 对象获取,然后使用 Object.fromEntries 方法将它转换为一个对象。
----- ------ - --- ------------------------------------------------ ----- --- - ------------------------------------- ----------------- -- ------ ------- ---- ----- ------- -------
解析 JSON 字符串
JSON 字符串也常常包含键值对,可以通过 JSON.parse 方法将它转换为一个对象,然后使用 Object.entries 方法将其转换为一个键值对数组,最后使用 Object.fromEntries 方法将其转换为新的对象。
----- ------- - --------------------------- ----- --- - -------------------- ----- ------- - -------------------- ----- ------ - ---------------------------- -------------------- -- ------ ------- ---- ---
将表单数据转换为对象
表单提交的数据通常是以键值对的形式出现的,可以使用 FormData 对象获取,然后使用 Object.fromEntries 方法将它转换为一个对象。
------ ------ ----------- ----------- ------------- ------ ------------- ---------- ----------- ------ ------------ ------------- ------------ -------- ---- ------ ------------ ------------- --------------- ------ ------ -------------- ------- -------- ----- ---- - ------------------------------- ------------------------------- ------- -- - ----------------------- ----- -------- - --- --------------- -- ------ ----- --- - --------------------------------------- -- ---------- ----------------- -- ------ ------- ---- ----- ------- ------- --- ---------
总结
Object.fromEntries 方法是 ECMAScript 2021 中新增的方法,它可以将一个键值对数组转换为一个对象。在解析 URL 查询字符串、JSON 字符串或者将表单数据转换为对象时,Object.fromEntries 方法都能很好地解决这些问题。在实际开发中,我们可以尝试使用 Object.fromEntries 方法来简化代码。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6644ce47d3423812e42b47fa