JavaScript中ES6的Object.fromEntries如何还原对象
时间:2026-08-20 | 作者:冻月看渠 | 阅读:0Object.fromEntries 的作用,说白了就是把一组键值对重新拼装成对象。
它要求传入的数据必须是可迭代对象,而且其中的每一项都得是长度为 2 的 [key, value] 数组。常见的数组和 Map 都支持。
需要注意的是,如果 key 不是字符串,通常会被自动转换成字符串,Symbol 是个例外。
Object.fromEntries 的作用就是把键值对列表还原成普通对象,它正好是 Object.entries 的逆操作。
什么格式能被 fromEntries 正确还原?
它只接受一个**可迭代对象**(比如数组、Map),且每一项必须是长度为 2 的数组,形式为 [key, value]。
- 正确:二维数组,如
[["a", 1], ["b", 2]] - 正确:Map 实例,如
new Map([["x", "hello"], ["y", true]]) - 错误:缺少某项(长度不为 2)、key 不是字符串或 Symbol、嵌套过深等都会报错或行为异常
常见还原场景和写法
从 Object.entries() 结果还原对象
最典型的场景,就是把 Object.entries() 的结果还原回去。
const obj = { name: "Alice", age: 30 };
const entries = Object.entries(obj); // [["name", "Alice"], ["age", 30]]
const restored = Object.fromEntries(entries); // { name: "Alice", age: 30 }
过滤或转换后重建对象
它也常用于先过滤、再转换,最后重新生成对象。
const data = { a: 1, b: 2, c: 3, d: 4 };
// 只保留值大于 2 的键值对
const filtered = Object.entries(data)
.filter(([, v]) => v > 2)
.map(([k, v]) => [k, v * 10]); // [["c", 30], ["d", 40]]
const result = Object.fromEntries(filtered); // { c: 30, d: 40 }
注意 key 的类型和隐式转换
fromEntries 会把 key 转成字符串,除非这个 key 是 Symbol。
Object.fromEntries([[true, "yes"], [null, "none"]])→{ "true": "yes", "null": "none" }Object.fromEntries([[Symbol("id"), 123]])→{ [Symbol("id")]: 123 }(Symbol 保持原样)
如果原始对象里带有 Symbol 键,Object.entries() 在取条目时会直接把这部分忽略掉。
也正因为如此,后面再用 fromEntries 去还原,也没办法把这些 Symbol 键补回来。这属于它本身就存在的限制。
替代方案:处理更复杂结构
如果数据不是标准二维数组,比如有嵌套、缺字段,或者需要容错,建议先清洗再传入。
- 用
Array.filter剔除无效项 - 用
Array.map统一格式,确保每项是[k, v] - 避免直接传入
Object.keys(obj).map(...)这类单数组,它生成的是一维结构,不能直接用
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- JavaScript正则表达式批量处理HTML标签转义与替换方法
- 时间:2026-08-21
-
- JavaScript函数默认参数的精准JSDoc类型注解方法
- 时间:2026-08-21
-
- JavaScript设置Cookie的SameSite属性防范CSRF攻击
- 时间:2026-08-21
-
- JavaScript中BOM如何打开新的浏览器窗口标签
- 时间:2026-08-20
-
- JavaScript微任务队列在事件循环中的执行机制
- 时间:2026-08-20
-
- JavaScript中网络超时如何用流程控制实现中断
- 时间:2026-08-20
-
- JavaScript防抖函数原理与减少高频事件触发方法
- 时间:2026-08-20
-
- TypeScript六个颠覆认知的核心知识点解析
- 时间:2026-08-20
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
