ES10 中的 Object.fromEntries() 函数

在 ES10 中,新增了一个非常实用的函数 Object.fromEntries(),它可以将一个由键值对组成的数组转换成一个对象。这个函数可以方便地将一些数据结构转换成对象,例如将 Map 转换成对象或将 URLSearchParams 转换成对象等等。

使用方法

Object.fromEntries() 函数接受一个由键值对组成的数组作为参数。数组中每个元素都是一个长度为 2 的数组,第一个元素是键,第二个元素是值。函数返回一个由这些键值对组成的对象。

const arr = [['a', 1], ['b', 2], ['c', 3]];
const obj = Object.fromEntries(arr);
console.log(obj); // {a: 1, b: 2, c: 3}

实用示例

Map 转换成对象

Object.fromEntries() 函数可以将 Map 转换成对象。Map 是一种键值对的集合,它的键可以是任意类型的值,而对象的键只能是字符串或 Symbol 类型的值。

const map = new Map([['a', 1], ['b', 2], ['c', 3]]);
const obj = Object.fromEntries(map);
console.log(obj); // {a: 1, b: 2, c: 3}

URLSearchParams 转换成对象

URLSearchParams 是一个 URL 查询参数的集合,它可以方便地解析和构建 URL 查询参数。Object.fromEntries() 函数可以将 URLSearchParams 转换成对象。

const params = new URLSearchParams('a=1&b=2&c=3');
const obj = Object.fromEntries(params);
console.log(obj); // {a: "1", b: "2", c: "3"}

对象转换成 Map

Object.entries() 函数可以将一个对象转换成一个由键值对组成的数组。结合 Object.fromEntries() 函数,可以将对象转换成 Map。

const obj = {a: 1, b: 2, c: 3};
const map = new Map(Object.entries(obj));
console.log(map); // Map(3) {"a" => 1, "b" => 2, "c" => 3}

注意事项

Object.fromEntries() 函数是 ES10 新增的函数,如果需要在旧版本的 JavaScript 中使用,可以使用 polyfill 或者手动实现这个函数。同时,由于这个函数的参数是一个由键值对组成的数组,如果数组中有重复的键名,后面的键值会覆盖前面的键值,因此需要注意数组中每个元素的键名是否唯一。

总结

Object.fromEntries() 函数是一个非常实用的函数,可以方便地将由键值对组成的数组转换成对象。它可以用于将 Map 转换成对象、将 URLSearchParams 转换成对象,以及将对象转换成 Map 等等。在实际开发中,可以根据具体的需求灵活使用这个函数,提高开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65bdea4fadd4f0e0ff786236