在 ECMAScript 2019 中,新增了一个名为 Object.fromEntries 的方法。该方法的作用是将一个键值对数组转换为一个对象。
Object.fromEntries 的用途
Object.fromEntries 方法可以在很多场景下使用,以下是一些常见的用途:
- 将 Map 转换为 Object
可以通过 Map 对象的 entries() 方法获取一个键值对的可迭代对象,然后使用 Object.fromEntries 将其转换为一个对象。
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]); const obj = Object.fromEntries(map.entries()); console.log(obj); // Output: { foo: 'bar', baz: 42 }
- 将二维数组转换为 Object
可以将一个二维数组中的第一列作为对象的键,第二列作为对象的值,然后使用 Object.fromEntries 方法将其转换为一个对象。
const arr = [['foo', 'bar'], ['baz', 42]]; const obj = Object.fromEntries(arr); console.log(obj); // Output: { foo: 'bar', baz: 42 }
- 将 FormData 转换为 Object
可以通过 FormData 对象的 entries() 方法获取一个键值对的可迭代对象,然后使用 Object.fromEntries 将其转换为一个对象。
const formData = new FormData(); formData.append('foo', 'bar'); formData.append('baz', 42); const obj = Object.fromEntries(formData.entries()); console.log(obj); // Output: { foo: 'bar', baz: '42' }
使用 Object.fromEntries 方法
下面是一个示例代码,演示了如何使用 Object.fromEntries 方法将 Map 转换为 Object。
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]); const obj = Object.fromEntries(map.entries()); console.log(obj); // Output: { foo: 'bar', baz: 42 }
需要注意的是,由于 Object.fromEntries 是 ECMAScript 2019 中新增的方法,因此可能需要在一些较旧的浏览器中进行 polyfill。可以使用以下代码进行 polyfill:
// javascriptcn.com 代码示例 if (!Object.fromEntries) { Object.fromEntries = function(entries) { const obj = {}; for (let i = 0; i < entries.length; i++) { const [key, value] = entries[i]; obj[key] = value; } return obj; }; }
总结
Object.fromEntries 方法是 ECMAScript 2019 中新增的一个方便实用的方法,可以将一个键值对数组转换为一个对象。在需要将 Map、二维数组或者 FormData 转换为 Object 时,可以使用该方法来实现功能。需要注意的是,由于该方法是 ECMAScript 2019 中新增的,可能需要在较旧的浏览器中进行 polyfill。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652a741b7d4982a6ebcc9384