📅  最后修改于: 2023-12-03 14:42:28.354000             🧑  作者: Mango
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 实现添加到我们的代码中,以确保代码的最大兼容性。