在 ES8 中,引入了 Object.fromEntries()
方法,可以将一个键值对数组转换为一个对象。在一些场景中,我们可能需要将一些数据从一个格式转换为另一个格式,像这种情况下,Object.fromEntries()
可以帮助我们实现这个功能,让我们更加高效地处理数据。
使用方法
Object.fromEntries()
方法接收一个键值对数组作为参数,返回一个新的对象。键值对数组中的每个元素代表一个属性的键值对,其中第一个元素表示属性名,第二个元素代表属性对应的值。以下是调用示例:
----- --- - --------- ----------- ------- ---- ---------- ----------- ----- --- - ------------------------ ----------------- -- - ----- ---------- ---- --- ------- -------- -
在上面的代码中,数组 arr
包含了三个元素,每个元素都是一个由两个值组成的子数组,代表了三个属性的键值对。通过调用 Object.fromEntries()
,将这个数组转化为新的对象 obj
。
由 Object.entries() 方法转换而来
有些情况下,我们想要将一个对象转化为另一个格式。针对这种情况,JavaScript 引入了 Object.entries()
方法,用于将对象转换为键值对数组。在这种情况下,我们只需要将 Object.entries()
的返回结果作为参数传递给 Object.fromEntries()
,就可以将对象转化为另一种格式。
----- --- - - ----- ---------- ---- --- ------- -------- -- ----- --- - -------------------- ----------------- -- --------- ----------- ------- ---- ---------- ---------- ----- ------------ - ------------------------ -------------------------- -- - ----- ---------- ---- --- ------- -------- -
从上述代码中可以看出,Object.entries()
方法将对象 obj
转化为了一个包含了三个元素的数组,其中每个元素都是一个由两个值组成的子数组。我们将这个数组传递给 Object.fromEntries()
,就可以将数组转化为新的对象 convertedObj
。
需要注意的是,如果传入的是空数组,则 Object.fromEntries()
方法的返回值将是一个空对象 {}
。
与 Object.assign() 方法的区别
在 JavaScript 中,我们还可以使用 Object.assign()
方法将两个对象合并在一起,生成一个新的对象。和 Object.fromEntries()
方法不同的是,Object.assign()
方法会将源对象中的所有属性覆盖到目标对象中,如果两个对象中有相同的属性名,则目标对象中的属性值会被源对象中的属性值所覆盖。
----- ---- - - ----- ---------- ---- -- -- ----- ---- - - ----- ------- ------- ------ -- ----- --------- - ------------------- ------ ----------------------- -- - ----- ------- ---- --- ------- ------ -
在上面的代码中,mergedObj
是 obj1
和 obj2
的合并结果,因为这两个对象中都包含了 name
属性,所以 obj1
中的 name
属性被 obj2
中的 name
属性所覆盖了。
与此相反的是,Object.fromEntries()
不会出现属性值被覆盖的情况。
总结
- 使用
Object.fromEntries()
方法可以将一个键值对数组转化为对象。 - 可以通过
Object.entries()
方法将对象转化为键值对数组,并在使用Object.fromEntries()
方法时作为参数传入。 Object.assign()
方法可以将两个对象进行合并,但存在属性值覆盖的风险。Object.fromEntries()
在将数据格式转化时非常有用,可以让代码更加简洁高效。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/659e44faadd4f0e0ff7498b7