如何将复杂对象转换为结构化的对象数组?

如何将复杂对象转换为结构化的对象数组?

如何将繁杂对象转换为结构化的对象数组

问题:

给定一个复杂的对象对象,其键和值分别代表对象的属性和数组值。我们的目标是将该对象转换为一个对象数组,其中每个对象包含一个 id、一个名称和一个包含子对象名称的 childList。

原始数据:

const obj = {  "a": [    "a1", "a2"  ],  "b": [    "b1", "b2", "b3" // 数组内个数不定  ],  //......};

目标数据:

const list = [  {    id: 1,    name: 'a',     childList:[      {id: 3, name: 'a1'},      {id: 4, name: 'a2'},    ]  },  {    id: 2,    name: 'b',    childList:[      {id: 5, name: 'b1'},      {id: 6, name: 'b2'},      {id: 7, name: 'b2'},    ]  }];

解决方案:

let id=1;Object.entries(obj).reduce((acc,[name, val])=>{    acc.push({id:id++, name, childList:val.map(name=>({id:id++, name}))});    return acc;},[]);

实现细节:

首先创建一个 id 计数器,从 1 开始。使用 Object.entries() 遍历原始对象的键值对

对于每个键值对,我们将创建一个新对象:

id:使用 id 计数器并递增。name:键。childList:将值数组中的每个元素转换为一个包含 id 和 name 属性的新对象。我们使用 reduce() 累积所有新创建的对象到 acc 数组中。最后,返回 acc 数组作为结果。

以上就是如何将复杂对象转换为结构化的对象数组?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1557128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 02:38:47
下一篇 2025年12月22日 02:39:04

相关推荐

  • 如何在 JavaScript 中添加 DOM 元素属性,而不指定属性值?

    在不指定属性值情况下,如何使用 javascript 添加 dom 元素 JavaScript 中的 setAttribute 方法需要提供属性的键值对,但有时我们需要添加一个属性,而不需要指定值。 解决方案: 可以使用 createAttribute 方法来创建属性,然后使用 setAttribu…

    2025年12月22日
    000
  • html标签有哪些通用特征

    HTML 标签是一组用于定义 Web 页面元素的标记,具有几个通用特征:标签名标识标签类型(例如, 表示段落)。属性提供有关标签的更多信息(例如,)。属性值必须用引号括起来。标签可以嵌套在其他标签内。大多数 HTML 标签是成对出现的,并且有一个闭合标签(例如,)。标签的浏览器支持因标签而异。 HT…

    2025年12月22日
    000
  • 数据库查询与HTML整合

    通过以下步骤,您可以将数据库查询结果整合到 html 页面中:建立数据库连接。执行查询并存储结果。遍历查询结果并将其显示在 html 元素中。 使用 PHP 将数据库查询与 HTML 整合 整合数据库查询结果和 HTML 页面可使您创建动态和交互式 Web 应用程序。本文将引导您完成使用 PHP 执…

    2025年12月22日
    000
  • html设置缓存三种方法是什么

    HTML设置缓存的三种方法是什么?在Web开发中,为了提高用户访问速度和减轻服务器负载,我们可以通过设置缓存来减少网页加载时间。接下来,我将为您详细介绍三种常用的HTML设置缓存的方法,并提供具体的代码示例。 方法一:通过HTTP响应头设置缓存 HTTP响应头中的”Cache-Contr…

    2025年12月22日
    000
  • javascript中的Map和Set有何特点_比对象和数组强在哪里

    Map 和 Set 是 ES6 专为任意类型键值对存储与去重查重设计的原生集合;Map 支持任意类型键、保持插入顺序、O(1) 获取大小;Set 基于哈希表实现自动去重与高效存在性检查。 Map 和 Set 是 ES6 引入的两种原生集合类型,它们不是对 Object 或 Array 的简单替代,而…

    2025年12月21日
    000
  • javascript的Map是什么_如何创建键值对集合?

    Map 是 JavaScript 中键可为任意类型的内置键值对集合,比普通对象更灵活可靠;可通过 new Map() 创建,支持 set/get/has/delete 等操作及 for…of、keys()、values() 等遍历方式,且保留插入顺序、size 可直接获取。 Map 是 …

    2025年12月21日
    000
  • 什么是JavaScript Set和Map_它们与对象和数组有何不同

    Set 是存储唯一值的有序集合,自动去重且支持任意类型键;Map 是键值对集合,键可为任意类型并保持插入顺序。二者均优于 Object(键受限、有原型干扰)和 Array(查找慢、无存在性优化)。 JavaScript 中的 Set 和 Map 是两种内置的集合数据结构,它们分别用于存储唯一值和键值…

    2025年12月21日
    000
  • 为什么javascript需要Map来替代对象_键类型有何不同?

    Map不是替代对象,而是解决对象键只能是字符串或Symbol的根本限制;它支持任意类型作键且不隐式转换,保持键的原始身份,具备size属性、插入顺序迭代和无原型干扰等优势。 JavaScript 中的 Map 并不是为了“替代”对象,而是为了解决对象作为键值容器时的**根本限制**:对象的键只能是字…

    2025年12月21日
    000
  • javascript的map和set是什么_它们与对象有何区别?

    Map 和 Set 是 ES6 引入的原生数据结构:Set 存储唯一值,支持任意类型去重;Map 存储键值对,键可为任意类型且保持插入顺序,二者均非 Object 或 Array 的语法糖。 JavaScript 中的 Map 和 Set 是 ES6 引入的两种原生数据结构,分别用于高效管理键值对和…

    2025年12月21日
    000
  • JavaScript如何实现本地存储_使用localStorage和sessionStorage的区别?

    localStorage长期存储且同源跨标签页共享,sessionStorage仅限当前标签页会话期。二者均只支持字符串存储,需JSON序列化对象,注意安全与容量限制。 JavaScript 中的本地存储主要通过 localStorage 和 sessionStorage 实现,它们都提供键值对形式…

    2025年12月21日
    000
  • 什么是JavaScript的Map和Set_它们与对象和数组有什么不同呢

    Map 和 Set 是 JavaScript 中专用于键值映射与唯一值集合的数据结构;Map 支持任意类型键、有序插入、size 属性及统一方法;Set 自动去重、基于 SameValueZero 判断相等、提供 O(1) 存在性查询。 Map 和 Set 是 JavaScript 中两种专门用于存…

    2025年12月21日
    000
  • 什么是对象_Javascript中如何创建对象

    对象是JavaScript中存储键值对的引用类型,由属性和方法组成,可通过字面量、构造函数、工厂函数或自定义构造函数创建;属性名含特殊字符需引号包裹并用方括号访问;赋值和比较均基于内存地址。 对象是 JavaScript 中的一种基本数据类型,用来存储键值对(属性和方法)的集合,能模拟现实世界中的实…

    2025年12月21日
    000
  • javascript对象是什么_如何访问对象属性?

    JavaScript对象是存储键值对的容器,常用字面量写法创建;访问属性可用点号(.)或方括号([]),前者限合法标识符,后者支持动态和特殊字符属性名;访问不存在属性返回undefined,null/undefined对象上访问会报TypeError,推荐用可选链(?.)保障安全。 JavaScri…

    2025年12月21日
    000
  • javascript中JSON是什么_如何解析和序列化数据?

    JSON是轻量级数据交换格式,支持字符串、数字、布尔值、null、数组和对象,不支持函数等JS特有类型;用parse解析、stringify序列化,需注意单引号、注释、循环引用等问题。 JSON 是一种轻量级的数据交换格式,不是 JavaScript 的专属语法,但 JavaScript 提供了原生…

    2025年12月21日
    000
  • javascript中的Cookie是什么_如何安全地使用它

    Cookie是HTTP协议的一部分,由服务器通过Set-Cookie下发、浏览器自动存取,最大约4KB;JavaScript仅能通过document.cookie操作非HttpOnly Cookie,本质为字符串操作,需注意编码、路径、域名、Secure及安全配置。 Cookie 是浏览器保存在用户…

    2025年12月21日
    000
  • javascript Map是什么_它和普通对象有什么区别?

    JavaScript Map 是一种键值对集合,支持任意类型键、保持插入顺序、提供 size 属性、遍历有序且高效,适合动态场景;而普通对象键受限、统计繁琐、遍历顺序不一致,更适合固定结构数据。 JavaScript Map 是一种键值对集合,允许任意类型的数据作为键,且保持插入顺序。它比普通对象更…

    2025年12月21日
    000
  • javascript WeakMap是什么_为什么它有助于内存管理?

    WeakMap 是键必须为对象且弱引用的集合,不阻止垃圾回收,无遍历和 size 方法,适用于 DOM 状态绑定、类私有属性等临时元数据挂载场景,与 Map 互补而非替代。 WeakMap 是 JavaScript 中一种特殊的键值对集合,它的核心作用是让对象作为键时不会阻止垃圾回收,从而避免内存泄…

    2025年12月21日
    000
  • 为什么javascript需要生成器委托_yield星号有何作用?

    yield* 是为解决生成器间嵌套迭代的自然衔接问题而设计的委托迭代机制,可透明转发 next()/throw()/return() 到任意可迭代对象,并自动管理状态与错误传播。 JavaScript 中的生成器委托(yield*)不是为了“简化代码”或“让语法更酷”,而是为了解决生成器函数之间**…

    2025年12月21日
    000
  • Javascript如何操作JSON_如何进行序列化和解析?

    JavaScript操作JSON主要靠JSON.stringify()和JSON.parse():前者将对象序列化为字符串,支持过滤字段和格式化输出;后者将字符串解析为对象,支持reviver函数处理值;二者均不支持函数、undefined、Symbol等类型,需注意Date转换、循环引用及大数字精…

    2025年12月21日
    000
  • javascript对象是什么_如何创建和操作对象属性

    JavaScript对象是存储键值对的无序、可变、动态集合,用于表示实体或数据结构;键为字符串/Symbol,值可为任意类型;创建方式包括字面量、构造函数和Object.create();支持点语法和方括号语法访问属性,可用delete删除,常用hasOwnProperty()、in操作符及Obje…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信