在 ECMAScript 2019 中,引入了 Object.fromEntries() 方法,该方法可以将由键值对组成的数组转换为对象。同时,对象也可以通过 Object.entries() 方法转换为数组形式。这个新的方法提供了一种更加便捷的方式来实现数组和对象之间互转。
Object.fromEntries() 方法
Object.fromEntries() 是 ECMAScript 2019 的新特性,它可以将键值对数组转换为对象。这个方法接收一个由键值对组成的数组作为参数,并返回一个对象,该对象的属性和值对应于数组中的键值对。
下面是一个简单的示例,演示了如何使用 Object.fromEntries() 方法将数组转换为对象。
const arr = [['name', 'Tom'], ['age', 24], ['gender', 'male']]; const obj = Object.fromEntries(arr); console.log(obj);
运行结果如下:
{ name: 'Tom', age: 24, gender: 'male' }
在上面的代码中,我们将一个由键值对组成的数组 arr,通过调用 Object.fromEntries() 方法转换为了一个对象 obj。根据数组中的键值对,我们可以看到 obj 对象中含有三个属性:name、age 和 gender,它们的值分别为 Tom、24 和 male。
Object.entries() 方法
Object.entries() 方法是 Object.fromEntries() 方法的逆方法。它接收一个对象作为参数,并返回一个由键值对组成的数组。如果我们需要将一个对象转换为数组形式,可以使用该方法。
下面是一个示例代码,演示了如何使用 Object.entries() 方法将对象转换为数组。
const obj = { name: 'Tom', age: 24, gender: 'male' }; const arr = Object.entries(obj); console.log(arr);
运行结果如下:
[ [ 'name', 'Tom' ], [ 'age', 24 ], [ 'gender', 'male' ] ]
在上面的代码中,我们先定义了一个对象 obj,然后通过调用 Object.entries() 方法,将它转换为了一个含有三个键值对的数组形式。
数组转换为对象
在一些场景下,我们需要将一个由键值对组成的数组转换为对象形式。在 ECMAScript 2019 中,我们可以通过 Object.fromEntries() 方法实现这个功能。
下面是一个示例代码。
const arr = [['name', 'Tom'], ['age', 24], ['gender', 'male']]; const obj = Object.fromEntries(arr); console.log(obj);
运行结果如下:
{ name: 'Tom', age: 24, gender: 'male' }
在上面的代码中,我们定义了一个由键值对组成的数组 arr,并通过调用 Object.fromEntries() 方法,将其转换为了一个对象 obj。根据数组中的值对应到对象中,我们可以看到 obj 对象中包含三个属性:name、age 和 gender,它们的值分别为 Tom、24 和 male。
对象转换为数组
有时候,我们也需要将一个对象转换为一个由键值对组成的数组。在 ECMAScript 2019 中,我们可以使用 Object.entries() 方法实现这个转换过程。
下面是一个示例代码。
const obj = { name: 'Tom', age: 24, gender: 'male' }; const arr = Object.entries(obj); console.log(arr);
运行结果如下:
[ [ 'name', 'Tom' ], [ 'age', 24 ], [ 'gender', 'male' ] ]
在上面的代码中,我们定义了一个对象 obj,并通过调用 Object.entries() 方法,将其转换为了一个由键值对组成的数组 arr。数组中包含三个元素,每个元素都是一个数组,第一个元素是属性名,第二个元素是属性值。
总结
在 ECMAScript 2019 中,Object.fromEntries() 方法提供了一种更加便捷的方式来实现数组和对象之间的互转。通过 Object.fromEntries() 方法可以将由键值对组成的数组转换为对象。同时,对象也可以通过 Object.entries() 方法转换为数组形式。这个新特性的引入使得 JavaScript 的编程更加灵活和高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a3ecbdadd4f0e0ffc1d2cd