推荐答案
Object.fromEntries
是 ECMAScript 2019 (ES10) 引入的一个静态方法,用于将一个键值对列表(通常是一个二维数组)转换为一个对象。它接收一个可迭代对象(如数组)作为参数,其中每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。Object.fromEntries
会将这些键值对转换为对象的属性和值。
示例代码
const entries = [['name', 'Alice'], ['age', 25], ['city', 'New York']]; const obj = Object.fromEntries(entries); console.log(obj); // 输出: { name: 'Alice', age: 25, city: 'New York' }
本题详细解读
1. 方法定义
Object.fromEntries(iterable)
方法接收一个可迭代对象 iterable
作为参数。这个可迭代对象中的每个元素都应该是一个包含两个元素的数组,第一个元素是键,第二个元素是值。
2. 参数
iterable
: 一个可迭代对象,通常是数组,其中每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。
3. 返回值
- 返回一个新对象,该对象的属性由
iterable
中的键值对构成。
4. 使用场景
将
Map
转换为对象:const map = new Map([['name', 'Alice'], ['age', 25]]); const obj = Object.fromEntries(map); console.log(obj); // 输出: { name: 'Alice', age: 25 }
将
URLSearchParams
转换为对象:const params = new URLSearchParams('name=Alice&age=25'); const obj = Object.fromEntries(params); console.log(obj); // 输出: { name: 'Alice', age: '25' }
5. 注意事项
- 如果
iterable
中的某个元素不是包含两个元素的数组,或者键不是字符串或 Symbol 类型,可能会导致错误或意外的结果。 Object.fromEntries
是Object.entries
的逆操作,Object.entries
将对象转换为键值对数组,而Object.fromEntries
将键值对数组转换回对象。
6. 兼容性
Object.fromEntries
是 ES10 引入的新特性,因此在较旧的 JavaScript 环境中可能不被支持。如果需要在不支持的环境中使用,可以考虑使用 polyfill 或手动实现类似的功能。