object.entries()将对象自身可枚举字符串键属性转为[key, value]二维数组,不处理symbol键、原型属性、getter及不可枚举属性,非对象输入会报错,且仅扁平转换不递归序列化值。

Object.entries() 会把一个对象的可枚举属性(键值对)转成二维数组,每个子数组是 [key, value] 形式。
基本用法:直接转换普通对象
它只处理对象自身可枚举的字符串键属性,不递归、不处理 Symbol 键或原型链上的属性。
- 语法:
Object.entries(obj) - 返回值:数组,元素为
[key, value]的小数组 - 例如:
Object.entries({a: 1, b: 2})→[["a", 1], ["b", 2]]
配合 for...of 或解构遍历更直观
拿到键值对数组后,常用 for...of 或数组解构来逐项操作:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
for (const [key, value] of Object.entries(obj)) { console.log(key, value); }- 比
for...in更安全——不会遍历原型属性,也不用额外过滤hasOwnProperty - 适合需要同时用到键和值的场景,比如生成 URL 查询参数、校验字段、构建映射表
注意边界情况:null、undefined 和非对象
传入非对象(如 null、undefined、原始值)会报错 TypeError。
- 安全写法:先判断是否为对象,再调用
Object.entries - 例如:
if (obj && typeof obj === 'object') { ... } - 空对象
{}返回空数组[],没问题
不能替代 JSON.stringify 或深拷贝
Object.entries() 只做一层扁平转换,值本身如果是对象、数组等,不会展开或序列化。
-
Object.entries({x: {y: 1}})→[["x", {y: 1}]],不是[["x", "{y:1}"]] - 若需序列化值,得手动对
value调用JSON.stringify等 - 它也不处理 getter、不可枚举属性(如
Object.defineProperty设为enumerable: false的属性)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










