object.entries(obj)是最直接的方法,返回由[key, value]数组组成的二维数组;也可用object.keys().map()自定义处理;嵌套对象需flatmap或递归扁平化;array.from可兼容map等迭代器。
javascript 中将对象转换为“数组的数组”(即二维数组),通常是指把对象的键值对转成形如 [['key1', 'value1'], ['key2', 'value2']] 的结构。核心方法是先获取键值对,再用 map 或 array.from 组装成二维数组。
用 Object.entries() 最直接
Object.entries(obj) 本身就是专为此设计的:它返回一个由 [key, value] 数组组成的二维数组。
- 适用于普通对象(非 null/undefined,且不包含 Symbol 键)
- 键名自动转为字符串(包括数字键、布尔键等)
- 顺序与
for...in一致(遵循属性枚举顺序规则)
const obj = { a: 1, b: 2, c: 3 };
const arrOfArrs = Object.entries(obj); // [['a', 1], ['b', 2], ['c', 3]]
手动构造:Object.keys() + map
如果需要自定义格式(比如只取值、或加处理逻辑),可用 Object.keys() 配合 map。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 适合需要过滤、转换键或值的场景
- 注意:
Object.keys()只返回可枚举的自有字符串键,不包含 Symbol 或原型链上的属性
const obj = { x: 10, y: 20 };
const arrOfArrs = Object.keys(obj).map(key => [key, String(obj[key])]);
// [['x', '10'], ['y', '20']]
处理嵌套对象或特殊结构
如果原始对象本身是嵌套结构(比如 { user: { name: 'A', age: 25 } }),而你想要扁平化为二维数组,需额外遍历或递归。
- 简单一层嵌套可结合
Object.entries()和展开操作 - 深层嵌套建议先
JSON.stringify+ 解析,或写递归函数,但要注意循环引用问题
const obj = { user: { name: 'Alice', city: 'NYC' } };
const flatEntries = Object.entries(obj).flatMap(([k, v]) =>
typeof v === 'object' && v !== null && !Array.isArray(v)
? Object.entries(v).map(([subK, subV]) => [`${k}.${subK}`, subV])
: [[k, v]]
);
// [['user.name', 'Alice'], ['user.city', 'NYC']]
兼容旧环境或自定义键来源
若需支持 IE 或处理 Map、Set 等类对象,可用 Array.from() 配合迭代器。
-
Array.from(new Map([['a',1],['b',2]]))→[['a',1],['b',2]] - 对普通对象:先用
Object.entries(),再用Array.from()是冗余的,除非要同时做类型转换(如转成 Uint8Array)
const obj = { foo: 'bar' };
const arrOfArrs = Array.from(Object.entries(obj)); // 同 Object.entries(obj)Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










