JavaScript对象如何转换为包含id、name和子对象数组的新对象数组?

JavaScript对象如何转换为包含id、name和子对象数组的新对象数组?

本文介绍如何将一个javascript对象转换为特定结构的对象数组。原始对象结构如下:

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: 'b3'}    ]  }];

我们可以通过Object.entries()reduce()方法实现此转换。代码如下:

let obj = {  "a": ["a1", "a2"],  "b": ["b1", "b2", "b3"]};let id = 1;const list = Object.entries(obj).reduce((acc, [name, val]) => {    acc.push({        id: id++,        name,        childList: val.map(childName => ({ id: id++, name: childName }))    });    return acc;}, []);

这段代码首先使用Object.entries()将对象转换为键值对数组。然后,reduce()方法迭代每个键值对,创建一个包含idnamechildList属性的新对象。childList属性通过将原始数组中的每个元素映射到一个新的包含idname属性的对象来生成。id在每次迭代中递增。最后,reduce()方法返回包含所有新对象的对象数组。 这种方法简洁高效地完成了对象结构的转换。

以上就是JavaScript对象如何转换为包含id、name和子对象数组的新对象数组?的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 08:23:18
下一篇 2025年12月22日 08:23:34

相关推荐

  • JavaScript如何只设置DOM元素属性名而不赋值?

    在javascript中,动态创建dom元素并设置属性时,有时只需设置属性名,无需赋值。例如,创建一个包含primary属性的div元素,但无需为该属性指定值。 标准的setattribute(‘key’, ‘value’)方法无法满足此需求,因为它需要键值对。 解决方法是使用document.cr…

    2025年12月22日
    000
  • CSS relative定位居中:为什么总是失败?

    css相对定位居中:为何总是失败? 许多开发者在使用CSS布局时,会发现相对定位(relative)无法完美实现元素居中。本文通过一个案例分析,解释relative定位与绝对定位(absolute)、固定定位(fixed)的差异,揭示relative定位为何在某些情况下无法实现垂直居中。 我们来看一…

    2025年12月22日
    000
  • 网页批注如何实现Y轴位置的自适应避免重叠?

    巧妙解决网页批注y轴重叠:自适应算法详解 本文介绍一种类似Word的网页批注功能实现方案,重点在于如何通过算法避免批注垂直方向上的重叠。 核心是设计一个算法,根据已有的批注信息,智能计算新批注的最佳垂直位置。 理想的批注布局需兼顾两种情况:批注间距较大时,新批注应尽可能靠近关联文本;间距较小时,新批…

    2025年12月22日
    000
  • XML配置文件报错,程序运行正常却登录失败怎么办?

    xml文件报错但程序运行正常,登录后却出现后台错误 在开发过程中,我们经常会遇到这样的问题:XML配置文件虽然有标红报错,但程序却能正常运行,然而在访问特定功能,例如登录时,却抛出异常。本文将针对一个案例,分析XML文件报错与运行时NullPointerException异常之间的关联,并给出解决方…

    好文分享 2025年12月22日
    000
  • 如何用CSS实现父容器中两个子div的居中重叠显示?

    如何让父容器中的两个子div水平垂直居中并重叠显示?本文将演示如何使用css技巧,实现一个较大div和一个较小div在父div中居中,并使小div覆盖在大div之上。 为了达到重叠效果,我们需要巧妙运用position: absolute和margin: auto等属性。 首先,父div需要设置po…

    2025年12月22日
    000
  • Vim下Emmet CSS缩写展开失效怎么办?

    vim中emmet css缩写展开失败的解决方案 许多Vim用户依赖Emmet插件提升编码效率,但有时Emmet-vim插件无法正确展开CSS缩写。本文将分析一个常见问题:使用Emmet-vim编写CSS时,缩写如bd5#0s和c#ff无法正常展开。 问题描述:用户尝试使用Emmet缩写,例如bd5…

    2025年12月22日
    000
  • 如何用CSS实现两个大小不同的div在父容器中居中叠加?

    如何在一个父容器中,将两个大小不同的子div实现居中叠加显示?本文将详细讲解如何利用css技巧,实现两个大小不一的div在父容器内水平垂直居中,并让其中一个div覆盖在另一个div之上。 首先,我们需要构建HTML结构。父容器div包含两个子div,分别命名为inner1和inner2,方便后续CS…

    2025年12月22日
    000
  • 前端如何统计后台返回数组中重复数据的次数?

    高效统计前端数组中重复数据:基于reduce方法的解决方案 本文介绍一种高效方法,用于统计后台返回数组中重复数据的次数,并避免因数据分批返回导致的计数错误。 假设后台返回的数据包含重复的NO字段,我们需要在前端对这些数据进行去重并统计每个NO字段出现的次数。 问题:直接计数方法在处理连续数据流时,重…

    2025年12月22日
    000
  • CSS相对定位为什么无法精确居中?

    css相对定位居中难题:深入探讨position属性的差异 许多前端开发者在使用CSS布局时,常常会遇到相对定位(position: relative)无法精确居中元素的问题。本文将通过一个案例分析position: relative、position: absolute和position: fix…

    2025年12月22日
    000
  • 如何修改ECharts环状图中间文字的颜色?

    自定义echarts环状图中间文字颜色 在使用ECharts制作环状图时,常常需要对环状图中间的文字进行个性化设置,其中修改文字颜色是一个常见需求。本文将针对“如何修改ECharts环状图中间文字颜色”这一问题进行详细解答。 问题描述:用户希望修改ECharts环状图中间的文字颜色,但不知道如何操作…

    好文分享 2025年12月22日
    000
  • 服务器空闲后首次访问慢,是什么原因导致的?

    服务器空闲后首次访问慢,页面加载时间长的问题排查 很多网站都遇到过这样的情况:服务器长时间未被访问后,第一次访问页面加载速度异常缓慢,而后续访问则恢复正常。本文将针对这个问题,深入探讨可能的原因。 问题描述中,用户展示了服务器空闲一段时间后,首次访问页面加载缓慢的现象。页面文档加载时间明显延长,而后…

    好文分享 2025年12月22日
    000
  • CSS布局:父元素padding与子元素100%宽度冲突如何解决?

    css布局中,子元素宽度与父元素padding冲突的解决方法 在CSS布局中,父元素的padding属性常常与子元素的width: 100%属性发生冲突,导致子元素无法完全填充父元素的可用空间。本文将针对父元素使用相对定位,子元素使用绝对定位的情况,详细讲解如何解决这个问题。 问题描述: 假设一个父…

    2025年12月22日
    000
  • Element UI表单动态校验:数据回显延迟导致校验错乱如何解决?

    element ui表单动态校验及数据回显延迟引发的校验问题解决方案 在使用Element UI构建表单时,动态校验经常会遇到挑战,尤其当校验规则依赖异步接口数据时。接口响应慢会导致校验规则错乱,例如:必填项的星号消失,但必填提示仍然存在。本文分析此类问题,并提供有效的解决方法。 问题描述: 组件的…

    2025年12月22日
    000
  • 如何将JavaScript键值对数组对象转换为指定结构的对象数组?

    javascript对象转换:键值对数组到结构化对象数组 本文介绍如何将JavaScript键值对数组对象转换为特定结构的对象数组。 假设初始数据是一个对象,其键代表类别,值是该类别下元素的数组: const obj = { “a”: [“a1”, “a2”], “b”: [“b1”, “b2”, …

    2025年12月22日
    000
  • CSS绝对定位子元素如何完全占据父元素内容区域(含padding)?

    本文探讨css布局中,如何让绝对定位的子元素完美贴合父元素内容区域(包含padding)。 许多开发者遇到这样的问题:父元素设置了padding,绝对定位的子元素宽度设为100%,却无法完全填充父元素的内部区域。 问题: 父元素使用相对定位并设置padding,子元素绝对定位且宽度为100%。预期子…

    2025年12月22日
    000
  • JavaScript数组如何高效分组并转换成对象?

    高效分组JavaScript数组并转换为对象 本文介绍如何将任意长度的javascript数组,根据特定规则分组,最终生成一个对象,键值对分别对应分组索引和对应的数据数组。这直接解决了“js数组转换”问题。 假设有一个包含数字1到14的数组arr,需要实现两种分组方式:按列分组和按行分组。这两种方式…

    2025年12月22日
    000
  • Emmet-vim CSS缩写无法展开是什么原因?

    Emmet-vim CSS 缩写展开失效排查 许多 vim 用户借助 emmet-vim 插件提升 css 代码编写效率。然而,有时 emmet-vim 却无法正确展开 css 缩写,这给开发者带来不便。本文将针对用户遇到的 emmet-vim css 缩写展开问题进行分析和解答。 用户反馈在使用 …

    好文分享 2025年12月22日
    000
  • JavaScript中如何只设置DOM元素属性名而不赋值?

    在javascript中,动态创建dom元素并设置属性时,有时需要只设置属性名而不赋值,类似于html中的 。setattribute(‘key’, ‘val’) 方法需要键值对,无法直接实现此目标。 解决方法是利用document.createAttribute() 方法创建一个属性节点,再用se…

    2025年12月22日
    000
  • Element UI表单动态校验:如何解决数据回显延迟导致的校验错误?

    element ui el-form 表单动态校验及数据回显问题详解 在使用 Element UI 的 el-form 组件进行表单动态校验时,异步数据回显常常导致校验规则与实际情况不符。本文分析一个典型案例,并提供有效的解决方案。 问题描述: el-form-item 组件的校验规则 rules …

    2025年12月22日
    000
  • 如何高效地将JavaScript对象转换为指定结构的对象数组?

    巧妙地将javascript对象转换为特定结构的对象数组 本文将详细介绍如何将一个JavaScript对象转换为具有特定结构的对象数组。 我们的目标是将一个键值对(其中值为数组)的对象,转换成一个新的数组。数组中的每个元素都是一个对象,包含原始对象的键作为name属性,原始对象的数组值作为child…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信