首页 > 其他分享 >js 一个对象有多层,都是分组对象,最后一层才是数组,怎么拍平这个对象,拍平后的格式是{a.b.c:[]}

js 一个对象有多层,都是分组对象,最后一层才是数组,怎么拍平这个对象,拍平后的格式是{a.b.c:[]}

时间:2024-07-27 11:51:08浏览次数:7  
标签:obj 拍平 对象 js result key array

要将一个嵌套对象拍平为 {a.b.c: []} 这种格式,可以使用递归方法遍历对象的每一层,并在最终层级构建平坦的键值对。以下是实现这一功能的示例代码:

function flattenObject(obj, parentKey = '', result = {}) {
    for (let key in obj) {
        const fullKey = parentKey ? `${parentKey}.${key}` : key;

        if (Array.isArray(obj[key])) {
            result[fullKey] = obj[key];
        } else if (typeof obj[key] === 'object') {
            flattenObject(obj[key], fullKey, result);
        }
    }
    return result;
}

// 示例对象
let nestedObject = {
    group1: {
        subgroup1: {
            array: [1, 2, 3]
        },
        subgroup2: {
            array: [4, 5]
        }
    },
    group2: {
        array: [6, 7]
    }
};

let flattenedObject = flattenObject(nestedObject);
console.log(flattenedObject);
// 输出: { 'group1.subgroup1.array': [ 1, 2, 3 ], 'group1.subgroup2.array': [ 4, 5 ], 'group2.array': [ 6, 7 ] }

这个 flattenObject 函数使用递归方法遍历对象的每一层,构建平坦的键值对。在每次递归调用时,会检查当前属性值是否是数组,如果是数组,则直接将其添加到结果对象中。如果是对象,则继续递归处理。最终,所有嵌套对象将被拍平为 {a.b.c: []} 格式。

标签:obj,拍平,对象,js,result,key,array
From: https://www.cnblogs.com/jocongmin/p/18326769

相关文章

  • js 对数组进行任意层、n层分组
    如果分组层数是动态的,即可以是n层,可以使用递归函数来实现。以下是一个示例代码,展示了如何实现动态层数分组:const_=require('lodash');//示例数据letdata=[{category:'A',type:'X',subType:'Alpha',value:1},{category:'A',type:'X&......
  • 274java jsp SSM办公自动化管理系统员工档案员工考勤员工请假员工销假工作内容工作报
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 269java jsp SSM网上购物商城网站系统(源码+文档+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 265java jsp SSM搬家服务预约系统搬家人员搬家须知搬家订单货车类型(源码+文档+运行视
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 267java jsp SSM防疫信息登记系统风险地区管理(源码+文档+PPT+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 273java jsp SSM校园二手商品交易网站系统(源码+文档+运行视频+讲解视频)
    项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • pd.to_datetime() 不能始终如一地转换对象
    我一直在使用AWSS3存储桶中存在的数据(csv)。当我提取数据时,我必须将所有列转换为其正确的dtypes。除datetime64类型外,所有其他dtypes都正常工作。在下面的第一张图片中-我正在打印provider_dob,这是所需的格式,datetime64但是,我稍后在我的代码中打印......
  • Python - 如何传递类对象的函数参数类型(打字)
    我想python3.7附带了(不确定),不仅可以将变量名传递给函数,还可以传递变量的类型。我想知道的是是否有可能传递特定类的类型。以同样的方式传递:deffoo_func(i:int)->None:pass如果我有一个类,让我们说:classfoo_class(object):pass我如何转换fo......
  • Numpy&Pandas:pandas库的安装,不同对象的建立,文件的导入和了解数据
    目录前言一、Pandas库的安装二、不同对象的建立1.Series对象的创建1.用index方法指定索引2.在创建的时候就指定索引3.使用字典的方式创建4.将一个常量与index一起传入创建5.输出值和索引2.DataFrame对象的创建1.不指定列名则以键当列名行索引为默认值2.columns指......
  • c++ 线程函数传递数据 对象和变量
         CMakeLists.txtcmake_minimum_required(VERSION3.10)project(MyProject)#查找并添加线程库find_package(ThreadsREQUIRED)#添加可执行文件add_executable(my_programmain.cpp)#添加线程库链接target_link_libraries(my_programThreads::Threa......