ES12 中新增了一个非常实用的方法 Object.fromEntries()
,该方法可以将键值对转化为对象。在实际开发中,可能会遇到一些使用问题,本文将为大家详细介绍如何解决这些问题。
Object.fromEntries() 的使用
Object.fromEntries()
方法接受一个由键值对组成的数组,并返回一个由这些键值对组成的对象。示例如下:
const entries = [['a', 1], ['b', 2]]; const obj = Object.fromEntries(entries); console.log(obj); // { a: 1, b: 2 }
可以看到,上述代码将一个数组转化为了一个键值对组成的对象。
解决使用问题
问题一:无法在低版本浏览器中使用
Object.fromEntries()
方法是 ES12 中新增的方法,在低版本浏览器(如 IE)中无法使用。解决方法是可以使用 JavaScript 的高级特性 polyfill
。polyfill
实际上是通过在运行时添加方法的方式,将 ES12 中新增的功能添加到低版本浏览器中。示例如下:
-- -------------------- ---- ------- -- --------------------- - ------------------ - ------- -- - --- --- - --- --- ---- ----- ------ -- -------- - -------- - ------ - ------ ---- -- -
通过如上代码,即可在低版本浏览器中使用 Object.fromEntries()
方法。
问题二:数组中有重复的键名
如果一个数组中含有重复的键名,只有最后一次出现的键值对会在输出结果中出现。示例如下:
const entries = [['a', 1], ['b', 2], ['a', 3]]; const obj = Object.fromEntries(entries); console.log(obj); // { a: 3, b: 2 }
可以看到,最后一次出现的键值对 ['a', 3]
覆盖了之前的 ['a', 1]
。
解决方法是在调用 Object.fromEntries()
方法之前,先对数组进行处理,将重复的键名合并成一个数组。示例如下:
-- -------------------- ---- ------- ----- ------- - ------ --- ----- --- ----- ---- ----- ---- - --- ---------------------- ------- -- - -- ---------- --- ---------- - --------- - --- - ---------------------- --- ----- --- - -------------------------------------------------- ------- -- ----- ------------ --- - - -------- - --------- ----------------- -- - -- ------ -- - -
可以看到,通过对数组进行处理后,键名为 a
的键值对的值变成了数组,包含了之前重复出现的两个值。
总结
本文详细介绍了如何解决 Object.fromEntries()
方法的使用问题。首先解决了在低版本浏览器中无法使用的问题,其次,针对重复键名的问题,提供了一种解决方法。建议在使用 Object.fromEntries()
方法的时候,结合本文中的方法进行合理使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6467218d968c7c53b0787cd2