📜  JavaScript | Object.fromEntries() 方法(1)

📅  最后修改于: 2023-12-03 14:42:28.354000             🧑  作者: Mango

JavaScript | Object.fromEntries() 方法

Object.fromEntries() 方法是一个较新的方法,它允许将一个键值对数组转换为一个对象。该方法从 ES2019 规范开始支持,但在实际使用中还是比较少见的。

语法

Object.fromEntries(iterable)

参数说明:

  • iterable: 必需。一个可迭代对象,如数组或 Map 对象等。

返回值:一个新的对象。

示例

以下是使用 Object.fromEntries() 方法的示例:

// 将一个键值对数组转换为一个对象
const entries = [
  ['name', 'John'],
  ['age', 30],
  ['city', 'New York']
];

const obj = Object.fromEntries(entries);

console.log(obj);
// expected output: {name: "John", age: 30, city: "New York"}

在上述示例中,我们首先定义了一个键值对数组 entries,然后使用 Object.fromEntries() 方法将其转换为一个对象。最后我们输出该对象,其输出结果为 {name: "John", age: 30, city: "New York"}

除此之外,我们还可以将 Map 对象转换为一个对象。以下是使用 Map 对象的示例:

// 将一个 Map 对象转换为一个对象
const myMap = new Map([
  ['name', 'John'],
  ['age', 30],
  ['city', 'New York']
]);

const obj = Object.fromEntries(myMap);

console.log(obj);
// expected output: {name: "John", age: 30, city: "New York"}

在上述示例中,我们首先定义了一个 Map 对象 myMap,然后使用 Object.fromEntries() 方法将其转换为一个对象。最后我们输出该对象,其输出结果与上一个示例相同。

注意事项

需要注意的是,Object.fromEntries() 方法只能接受可迭代对象作为参数,因此如果传递的参数不是一个可迭代对象,则会抛出一个 TypeError 异常。

而且,在不支持 Object.fromEntries() 方法的旧浏览器中,我们可以自己实现一个该方法的 polyfill 版本。以下是 Object.fromEntries() 方法的 polyfill 实现:

if (!Object.fromEntries) {
  Object.fromEntries = function(entries) {
    if (!entries || !entries[Symbol.iterator]) {
      throw new Error('Object.fromEntries() requires a single iterable argument');
    }

    const obj = {};
    for (let [key, value] of entries) {
      obj[key] = value;
    }

    return obj;
  };
}

我们可以将上述 polyfill 实现添加到我们的代码中,以确保代码的最大兼容性。