推荐答案
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 或手动实现类似的功能。