JavaScript 中的 Object.fromEntries 方法是在 ECMAScript 2019 版本中引入的。该方法的作用是将一个由键值对组成的数组转换为一个对象。在本文中,我们将深入探讨此方法,并展示它如何在 JavaScript 中使用。
Object.fromEntries 方法
Object.fromEntries() 方法接受一个由键值对组成的数组,并按照其顺序(key-value 的顺序)返回一个新的对象。它的应用场景多样,例如,可以从查询字符串(query string)中构造对象、转换 Map 到 Object 等等。
以下是它的基本语法:
Object.fromEntries(iterable)
其中,iterable
是一个由键值对组成的可迭代对象,比如 Array、Map,如下例所示:
-- -------------------- ---- ------- ----- ------- - - ----- --- ----- --- ----- -- -- ----- --- - ---------------------------- ----------------- -- - -- -- -- -- -- - -
从上述代码可以看出,我们定义了一个数组 entries
,它包含三个键值对。我们将它传递给方法 Object.fromEntries
中,并得到了一个新的对象 obj
。
Object.fromEntries 方法的应用场景
查询字符串
在 JavaScript 中,可以使用 URLSearchParams
对象来解析查询字符串(query string),然后将它转换为对象。以下是一个将查询字符串转换为对象的例子:
const searchParams = new URLSearchParams('?name=tom&age=20'); const entries = [...searchParams.entries()]; // [ ["name", "tom"], ["age", "20"] ] const obj = Object.fromEntries(entries); console.log(obj); // { name: "tom", age: "20" }
从上述代码可以看出,我们首先创建了一个 URLSearchParams
对象并将查询字符串传递给它。然后,我们将这个对象的所有键值对作为数组返回,并将其传递给 Object.fromEntries
方法来得到一个新对象。
Map 转换为 Object
JavaScript 中的 Map
是一种特殊的对象类型,它是由键值对组成的集合。通常,开发者在处理数据时会用 Map
类型来存储数据,最终需要将它转换为一个纯 JavaScript 对象,此时可以使用 Object.fromEntries
方法。
以下是将 Map
转换为对象的例子:
const map = new Map([['foo', 'bar'], ['baz', 42]]); const obj = Object.fromEntries(map); console.log(obj); // { foo: "bar", baz: 42 }
从上述代码可以看出,我们创建了一个 Map
并定义了两个键值对。然后我们将这个 Map
传递给 Object.fromEntries
方法,并得到了一个新的对象 obj
。
实际应用示例
以下是一个实际应用示例,它使用 Object.fromEntries
方法将表单序列化数据转换为一个对象:
<form id="myForm"> <input type="text" name="name" value="tom"> <input type="email" name="email" value="tom@example.com"> <input type="tel" name="phone" value="+1234567890"> <input type="checkbox" name="newsletter" checked> <button>Submit</button> </form>
const formData = new FormData(document.querySelector('#myForm')); const entries = [...formData.entries()]; const obj = Object.fromEntries(entries); console.log(obj); // { name: "tom", email: "tom@example.com", // phone: "+1234567890", newsletter: "on" }
从上述示例可以看出,我们首先创建了一个 FormData
对象,它包含表单中所有的输入控件。然后我们使用 entries
方法将它们转换为一个由键值对组成的数组,并最终调用 Object.fromEntries
方法将数组转换为对象。
总结
在本文中,我们学习了 ECMAScript 2019 中新增的 Object.fromEntries
方法,并展示了它的基本语法和应用场景。我们还提供了一些实际应用示例,以便读者了解它的使用方式。在实际开发中,可以将此方法运用到多种场景中,从而实现更高效的代码编写。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/652373fc95b1f8cacdae0f35