ES12 中 Object.fromEntries() 和 Object.entries() 的区别及应用

引言

ES12 中增加了新的方法 Object.fromEntries(),这个方法和 Object.entries() 非常相似但又有不同,本文将详细介绍 Object.fromEntries() 和 Object.entries() 的区别及应用。

Object.entries()

Object.entries() 是将一个对象的键值对转换成一个二维数组。例如:

----- --- - --- -- -- ---
----- ------- - --------------------
---------------------
-- ------- ------ --- ----- ---

Object.fromEntries()

Object.fromEntries() 是将一个二维数组转换成一个对象。例如:

----- ------- - ------ --- ----- ----
----- --- - ----------------------------
-----------------
-- ------- --- -- -- --

区别

Object.fromEntries() 和 Object.entries() 的区别就是 Object.fromEntries() 将二维数组转化成对象,而 Object.entries() 将对象转化成二维数组。

应用

将 map 转为对象

使用 Object.fromEntries() 可以将 map 转化成对象,例如:

----- --- - --- ---------- --- ----- -----
----- --- - ------------------------
-----------------
-- ------- --- -- -- --

将对象序列化为 URL 查询参数

使用 Object.entries() 和 URLSearchParams 类可以将对象序列化为 URL 查询参数,例如:

----- --- - --- -- -- ---
----- ------ - --- -------------------------------------
-------------------------------
-- ------- ---------

实现 Map 的过滤

使用 Object.entries() 和 Array.prototype.filter() 可以实现 map 的过滤,例如:

----- --- - --- ---------- --- ----- --- ----- -----

----- -------- - ----------------------------------
  --------------------------------------- ------- -- ----- - --
---
----------------------
-- ------- ------ --- ----- ---

----- ----------- - --- --------------
-------------------------
-- ------- --- - --- -- -- --- -- - -

结论

Object.fromEntries() 和 Object.entries() 在某些特定场景中非常有用,例如将 map 转化为对象、将对象序列化为 URL 查询参数和实现 Map 的过滤。但请注意,在上述场景中使用这两个方法时需要小心,避免出现意想不到的错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6704d047d91dce0dc850515f