在ES9中推出了 Object.fromEntries()
方法,它是为了配合 Object.entries()
方法使用的。Object.entries()
方法会将一个对象的键值对转换为一个由数组组成的二维数组,而 Object.fromEntries()
方法则是将这个二维数组再转化为一个新的对象。
使用方法
Object.fromEntries()
方法的参数为一个由数组组成的二维数组,每个数组元素是一个键值对。具体使用方法如下:
// javascriptcn.com 代码示例 const entries = [ ['foo', 'bar'], ['baz', 42] ]; const obj = Object.fromEntries(entries); console.log(obj); // expected output: { foo: "bar", baz: 42 }
应用场景
将 Map 转换为 Object
在 ES6 中,我们可以通过 Map
对象来存储键值对,但是在一些场景下需要使用对象而不是 Map。这时,我们就可以使用 Object.fromEntries()
方法将 Map 转换为对象。
const map = new Map(); map.set('foo', 'bar'); map.set('baz', 42); const obj = Object.fromEntries(map); console.log(obj); // expected output: { foo: "bar", baz: 42 }
将 Object 转换为 URLSearchParams
在使用 Fetch API 发送 POST 请求时,我们经常需要将请求参数使用 URLSearchParams
对象进行编码,在发送请求时作为参数传入。而 URLSearchParams
对象实际上也是由一系列的键值对组成的,因此我们可以使用 Object.entries()
方法将对象的键值对转换为 URLSearchParams
对象可以接受的形式,然后使用 Object.fromEntries()
方法将其转换为 URLSearchParams
对象。
const obj = { foo: 'bar', baz: 42 }; const params = new URLSearchParams(Object.entries(obj)); console.log(params.toString()); // expected output: "foo=bar&baz=42"
注意
在使用 Object.fromEntries()
方法时,如果有重复的键名,后者会覆盖前者。
总结
通过本文的介绍,我们了解了 ES9 中新增的 Object.fromEntries()
方法的具体使用方法和应用场景。它的出现使得我们可以更方便地将对象转换为 Map 对象、将 Map 对象转换为对象、将对象转换为 URLSearchParams 对象等,提高了代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654dc49f7d4982a6eb7293dd