You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将嵌套对象转换为指定格式的二维数组?

解决嵌套对象转二维数组的最优方法

首先先修正你提供的原始对象的语法错误(属性间缺少逗号),正确的对象结构应该是:

const obj = {
    top1: {
        obj1: {},
        obj2: {}
    },
    top2: {
        obj3: {},
        obj4: {}
    },
    top3: {
        obj5: {},
        obj6: {}
    }
};

最优实现方案

使用Object.entries()结合flatMap()是最简洁高效的方式,一步完成遍历与数组扁平化:

const result = Object.entries(obj).flatMap(([topKey, innerObj]) => {
    return Object.keys(innerObj).map(innerKey => [topKey, innerKey]);
});

console.log(result);
// 输出:[["top1","obj1"],["top1","obj2"],["top2","obj3"],["top2","obj4"],["top3","obj5"],["top3","obj6"]]

为什么你的map方法没成功?

你之前用Object.keys(obj).map(...)时,map会返回一个嵌套数组(比如[[["top1","obj1"],["top1","obj2"]], [...]])——每个顶层key对应的内层处理结果是一个数组,而普通map不会自动扁平化嵌套结构,最终得到的是三维数组,不符合预期。flatMap相当于先执行map再自动执行一次flat(),刚好能把嵌套数组展开成目标二维结构。

兼容旧环境的替代方案

如果运行环境不支持ES2019的flatMap,可以用map配合concat.apply实现扁平化:

const result = [].concat.apply([], Object.keys(obj).map(topKey => {
    return Object.keys(obj[topKey]).map(innerKey => [topKey, innerKey]);
}));

内容的提问来源于stack exchange,提问作者Ste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:04:59