在 JavaScript 中,内置对象(Native Objects)是一组 API,它们由实现 JavaScript 引擎的浏览器或 Node.js 内置提供。ES9 引入了一个名为 Object.fromEntries
的新方法,该方法用于将一组键值对转换为对象。
为什么需要 Object.fromEntries?
在 JavaScript 中,经常需要将一组键值对转换为对象。这通常可以通过循环遍历和手动添加属性来实现,如下所示:
const data = [ ['name', 'Alice'], ['age', 25], ['gender', 'female'] ]; const obj = {}; for (let [key, value] of data) { obj[key] = value; } console.log(obj); // { name: 'Alice', age: 25, gender: 'female' }
但是,这种方法比较繁琐,需要额外的代码来循环遍历和添加属性。ES9 引入的 Object.fromEntries
方法,可以更简洁地实现同样的效果,如下所示:
const data = [ ['name', 'Alice'], ['age', 25], ['gender', 'female'] ]; const obj = Object.fromEntries(data); console.log(obj); // { name: 'Alice', age: 25, gender: 'female' }
可以看到,使用 Object.fromEntries
只需一行代码即可将一组键值对转换为对象。
使用 Object.fromEntries
Object.fromEntries
的语法格式如下:
Object.fromEntries(iterable);
其中,iterable
是一个可迭代对象,它是一个键值对的数组(二维数组)或可迭代的返回一个键值对元组的迭代器对象。
Object.fromEntries
方法将给定的数组或迭代器中的键值对转换为一个新的对象,并以键值对的形式返回该对象。
下面是一个使用数组作为参数的示例:
const data = [ ['name', 'Alice'], ['age', 25], ['gender', 'female'] ]; const obj = Object.fromEntries(data); console.log(obj); // { name: 'Alice', age: 25, gender: 'female' }
下面是一个使用迭代器作为参数的示例:
const data = new Map([ ['name', 'Alice'], ['age', 25], ['gender', 'female'] ]); const obj = Object.fromEntries(data.entries()); console.log(obj); // { name: 'Alice', age: 25, gender: 'female' }
可以看到,Object.fromEntries
方法可以接受不同的输入类型,并返回一个合并了所有键值对的新对象。
兼容性和可替代性
目前(2021 年 10 月),Object.fromEntries
方法已经被包括在了现代浏览器和 Node.js 中。可以通过以下方式检查浏览器是否支持该方法:
if (typeof Object.fromEntries === 'function') { // 浏览器支持 Object.fromEntries 方法 } else { // 浏览器不支持 Object.fromEntries 方法 }
对于不支持 Object.fromEntries
方法的浏览器,可以使用以下代码作为替代方案:
const fromEntries = (entries) => { const obj = {}; for (let [key, value] of entries) { obj[key] = value; } return obj; }; // 使用替代方案 const data = [ ['name', 'Alice'], ['age', 25], ['gender', 'female'] ]; const obj = fromEntries(data); console.log(obj); // { name: 'Alice', age: 25, gender: 'female' }
总结
Object.fromEntries
方法是 ES9 中新增的一个方法,它可以将一组键值对转换为对象。使用 Object.fromEntries
方法,可以更简洁地实现同样的效果,并且在可读性和可维护性方面具有优势。但是,在使用 Object.fromEntries
方法之前,需要检查浏览器是否支持该方法,并考虑使用兼容性更好的替代方案。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a630bfadd4f0e0ffee4b76