Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
如何将省市区树状结构数据扁平化并根据选中状态调整层级信息?_创想鸟

如何将省市区树状结构数据扁平化并根据选中状态调整层级信息?

本文介绍如何将省市区三级嵌套数据扁平化,并根据选中状态调整层级信息。原始数据为树状结构,包含省、市、区三级信息(代码code、名称value和选中状态checked)。目标是根据选中状态,生成扁平化数据,并记录实际层级。

如何将省市区树状结构数据扁平化并根据选中状态调整层级信息?

原始数据结构示例:

[  {    "code": "110000",    "value": "北京市",    "checked": "1",    "children": [      {        "code": "110100",        "value": "北京市",        "checked": "1",        "children": [          {            "code": "110101",            "value": "东城区",            "checked": "1"          },          {            "code": "110102",            "value": "西城区",            "checked": "1"          }        ]      }    ]  },  {    "code": "120000",    "value": "天津市",    "checked": "1",    "children": [      {        "code": "120100",        "value": "天津市",        "checked": "1",        "children": [          {            "code": "120101",            "value": "和平区",            "checked": "0"          },          {            "code": "120102",            "value": "河东区",            "checked": "1"          }        ]      }    ]  }]

目标数据结构: 根据选中状态,如果所有子级都选中,则只保留父级;如果部分子级选中,则保留所有选中级别的信息。

[  {    "provinceAreald": "110000",    "cityAreald": null,    "countryAreald": null,    "actualAreaLevel": "1"  },  {    "provinceAreald": "120000",    "cityAreald": "120100",    "countryAreald": "120102",    "actualAreaLevel": "3"  }]

JavaScript实现: 以下代码通过递归函数实现数据转换:

function flattenData(data) {  const result = [];  function processNode(node, parent) {    if (node.checked === "1") {      const item = {        provinceAreald: parent ? parent.code : node.code,        cityAreald: null,        countryAreald: null,        actualAreaLevel: 1,      };      if (node.children) {        const childrenChecked = node.children.filter(child => child.checked === "1");        if (childrenChecked.length > 0) {          item.actualAreaLevel = 1;          childrenChecked.forEach(child => {              item.cityAreald = child.code;              item.actualAreaLevel = 2;              if(child.children){                  const grandChildrenChecked = child.children.filter(grandchild => grandchild.checked === "1");                  if(grandChildrenChecked.length > 0){                      grandChildrenChecked.forEach(grandchild => {                          item.countryAreald = grandchild.code;                          item.actualAreaLevel = 3;                      })                  }              }          })        }      }      result.push(item);    }    if (node.children) {      node.children.forEach(child => processNode(child, node));    }  }  data.forEach(province => processNode(province));  return result;}const newData = flattenData(data);console.log(newData);

这段代码更简洁高效地实现了相同的功能,避免了原代码中不必要的函数嵌套和变量传递。 它直接在递归函数内部处理所有层级,并根据选中状态动态更新actualAreaLevel以及cityAreald和countryAreald的值。

以上就是如何将省市区树状结构数据扁平化并根据选中状态调整层级信息?的详细内容,更多请关注创想鸟其它相关文章!

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

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
移动端组件自适应如何实现:如何在不修改原组件的前提下兼容不同机型?
上一篇 2025年12月22日 08:31:00
下一篇 2025年12月22日 08:31:16

相关推荐

  • 抖音0元开店有风险吗?抖音小店入驻收费多少

    短视频平台抖音凭借其独特的魅力,吸引了大量用户。抖音平台推出0元开店政策,为广大商家提供了新的创业机遇。机遇与风险并存,本文将深入剖析抖音0元开店的风险,帮助您在创业路上少走弯路。 一、抖音0元开店的优势 1. 低门槛:相较于传统电商平台,抖音0元开店降低了创业门槛,让更多人有机会实现创业梦想。 2…

    2026年9月23日
    000
  • 为什么Java中构造方法重要 如何正确编写构造方法

    构造方法确保对象正确初始化:通过强制赋初值、校验数据、支持封装和重载提升灵活性;编写时需遵循命名一致、无返回类型、合理用参、注意访问修饰符、避免复杂逻辑及善用this()调用;常见误区包括忽略无参构造、过度初始化和异常处理不当。 构造方法在Java中扮演着初始化对象的关键角色。创建对象时,构造方法会…

    2026年9月23日
    000
  • 深空之眼劫乘大千新增家具获取方法

    在深空之眼游戏中全新的「圣河印象」主题家具和诗蔻蒂专属家具「来自过去的画片」即将上线,部分玩家不知道应该怎么获得,下面就为大家带来深空之眼中劫乘大千新增家具的获取方法分享,一起来看看吧! 深空之眼新增家具获取方法 「圣河印象」主题家具: 游园街商店及参与版本活动「决斗王 三城道馆挑战赛!」获取。 诗…

    2026年9月23日
    000
  • 超高刷之外还有优秀色彩,这才是高刷 TN 屏该有的体验,HKC 神盾三代 UG25EF 深度评测

    超高刷之外还有优秀色彩,这才是高刷 TN 屏该有的体验,HKC 神盾三代 UG25EF 深度评测超高刷之外还有优秀色彩,这才是高刷 TN 屏该有的体验,HKC 神盾三代 UG25EF 深度评测超高刷之外还有优秀色彩,这才是高刷 TN 屏该有的体验,HKC 神盾三代 UG25EF 深度评测超高刷之外还有优秀色彩,这才是高刷 TN 屏该有的体验,HKC 神盾三代 UG25EF 深度评测

    引言:极致的速度真的能带来体验提升吗 在竞技类游戏中,顶尖选手与普通玩家的差距,有时就取决于毫秒之间的反应。而为了缩短这转瞬即逝的差距,玩家们选择不断升级外设,而厂商则在技术的极限上不断探索。当刷新率从 144Hz 跃升至 240Hz 时,我们感受到了前所未有的流畅;但当这个数字继续攀升,我们不禁要…

    2026年9月23日 • 用户投稿
    100
  • VS Code团队协作:共享配置与规范

    通过共享VS Code配置实现团队协作标准化,1. 使用.settings.json统一编辑器行为;2. 集成Prettier与ESLint确保代码风格一致;3. 通过extensions.json推荐必备插件;4. 忽略私有配置文件避免冲突,提升开发效率。 在团队开发中,保持代码风格一致和开发环境…

    2026年9月23日
    000
  • UC浏览器如何管理网站权限_UC浏览器网站权限设置与管理指南

    首先明确可通过设置网站权限解决UC浏览器功能受限问题。依次介绍查看修改权限、禁止位置信息、批量重置权限及为可信网站开放摄像头权限的操作步骤,提升安全与使用体验。 如果您在使用UC浏览器访问某些网站时遇到功能受限或提示请求权限的情况,可能是由于网站权限未正确配置。通过合理设置网站权限,您可以控制摄像头…

    2026年9月23日
    100
  • 苹果官网正版查询系统 iPhone序列号验证正品平台

    苹果官网正品查询入口为https://checkcoverage.apple.com/cn/zh/,输入序列号可验证设备型号、保修状态、购买方式及激活锁等信息,确保设备真实性与安全性。 苹果官网正版查询系统 iPhone序列号验证正品平台在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来苹果…

    2026年9月23日
    000
  • TikTok浏览量突然下降怎么办 视频推荐优化方法

    TikTok浏览量下降主因是算法重评而非账号问题,需排查网络IP、账号状态及违规内容;优化视频开头3秒吸引力、控制时长、设计循环结尾提升完播率;精准使用5-8个标签并参与热门挑战;保持领域垂直、引导互动、固定发布时间以恢复推荐流量。 如果你的TikTok浏览量突然下降,先别慌。这通常是算法在重新评估…

    2026年9月23日
    400
  • 广州11月宝宝误吞枕边祈福币险窒息是怎么回事?详情介绍

    近日,在广东广州,一名仅11个月大的宝宝因误吞硬币被紧急送医。这起事件再次敲响了婴幼儿家庭安全的警钟。幸运的是,在医生的快速处理下,硬币被成功取出,宝宝转危為安。医生也借此机会向广大家长普及了儿童误吞异物的紧急处理知识。 惊险瞬间:宝宝误吞祈福币 1、根据10月13日的采访报道,这起事件发生在广东广…

    2026年9月23日
    000
  • mysql安装后怎么调优 mysql性能优化基础配置建议

    mysql安装后怎么调优 mysql性能优化基础配置建议mysql安装后怎么调优 mysql性能优化基础配置建议mysql安装后怎么调优 mysql性能优化基础配置建议mysql安装后怎么调优 mysql性能优化基础配置建议

    安装完 mysql 后,默认配置常导致性能问题,基础调优可解决常见瓶颈。1. 修改 innodb_buffer_pool_size 为物理内存的 50%~80%,提升数据缓存效率;2. 根据并发量调整 max_connections 和 max_allowed_packet,避免连接不足或数据包被拒…

    2026年9月23日 • 用户投稿
    000
  • Prestashop分类描述在分页时的显示行为解析与SEO考量

    Prestashop商店中,分类描述通常仅在首个分页页面显示,而在后续分页页面上消失,甚至从第二页返回第一页时也可能不显示。这并非一个技术故障,而是Prestashop的默认行为,且从SEO角度看,只要描述在直接访问的第一页可见,就已满足核心要求,无需在所有分页页面重复显示,以避免潜在的重复内容问题…

    2026年9月23日
    100
  • Swoole如何使用协程实现高性能的API网关服务

    随着互联网的快速发展,api网关服务的重要性也越来越突出。api网关服务提供了接口的聚合、鉴权、流量控制等功能,能够帮助企业快速构建微服务架构,提高产品的性能和稳定性。然而,在高并发、大流量的情况下,传统的api网关服务往往无法满足性能和稳定性上的要求。 Swoole是PHP的一个高性能网络编程框架…

    用户投稿 2026年9月23日
    100
  • win11无线网卡突然找不到了怎么办_win11无线网卡消失问题修复方法

    首先检查物理开关和功能键是否禁用无线网卡,再通过重启WLAN服务、重装或更新驱动程序恢复识别,若无效则执行网络重置并检查BIOS设置中无线功能是否启用。 如果您发现Windows 11系统中的无线网卡突然无法被识别或在设备管理器中消失,这通常意味着系统未能正确加载该硬件。以下是解决此问题的步骤: 本…

    2026年9月23日
    000
  • 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7

    手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7

    如果你的电脑上安装了 ubuntu 16.04 系统,并且配备了一块 nvidia geforce gpu 显卡,那么不利用它来运行深度学习模型就太可惜了!尽管网上有许多相关教程,但质量参差不齐。本文将详细指导你如何在 ubuntu 16.04 上安装 gpu 显卡驱动、cuda 9.0 和 cud…

    2026年9月23日 • 用户投稿
    000
  • 英雄没有闪每周最新兑换码分享

    在《英雄没有闪》这款游戏中,官方每周都会为玩家提供礼包兑换码,让大家可以免费领取丰厚奖励。不少玩家朋友还不清楚本周最新的兑换码内容,下面我们就为大家整理并分享最新一周的兑换码信息,赶紧来看一看吧! 《英雄没有闪》最新礼包码 兑换码: 465x8H8t7f 有效期至: 9月29日0:00前有效 如何兑…

    2026年9月23日
    000
  • Infinispan中实现并发安全计数器:解决分布式应用中的用户登录统计挑战

    本文探讨了在Infinispan缓存中实现并发安全的用户登录计数问题,当多个用户同时登录时,传统计数方式可能导致数据不一致。文章详细介绍了利用Infinispan提供的分布式计数器、事务机制和版本化操作这三种核心策略,以确保在高并发环境下数据更新的原子性和一致性,为构建健壮的分布式应用提供解决方案。…

    2026年9月23日
    200
  • 抖店工作台怎么登录?抖音小店商家登录入口

    随着短视频平台的迅速发展,越来越多的商家将其作为营销的新渠道。其中,抖音电商平台推出的抖店为商家提供了全新的销售渠道。而想要高效运营店铺,首先得掌握如何进入抖店工作台。本文将详细介绍抖店工作台的登录方式,帮助您快速上手这一电商新工具。 1、抖音小店商家登录入口☜☜☜☜☜点击进入 2、TikTok网页…

    2026年9月23日
    500
  • 微信支付功能被限制怎么办 微信支付账户解封与操作方法

    先看通知内容,区分临时风控与长期限制。若提示24-72小时自动解除则无需操作;若需申诉,准备身份证、交易凭证、实名信息三类材料,通过“腾讯客服”小程序或95017官方渠道提交,1-3日审核,全程免费且无需联系私人账号。 微信支付被限制,别急着找人花钱解封。绝大多数情况是系统触发的安全保护,自己按官方…

    2026年9月23日
    000
  • Wi-Fi 8首次实验成功!三个“提升25%” 再也不怕堵车

    10月13日最新消息,wi-fi 7尚未全面普及,wi-fi 8的研发进程已悄然提速! 知名网络设备厂商普联(TP-Link)近日宣布,已成功完成首次Wi-Fi 8硬件测试实验,所用设备为一款内部原型机。 本次测试重点验证了Wi-Fi 8的信标帧(beacon)功能及数据吞吐能力,被官方称为“Wi-…

    2026年9月23日
    100
  • qq浏览器提示“您要访问的网站存在风险”如何继续_QQ浏览器风险网站强制访问设置

    当QQ浏览器提示网站存在风险时,可选择继续访问、将网站加入白名单或临时关闭安全中心防护。首先在警告页面点击“继续访问”按钮直接进入;其次通过设置→隐私与安全→可信站点添加网址至白名单;最后可临时关闭“安全中心”功能以绕过拦截,但建议访问后重新开启以保障安全。 如果您尝试访问某个网站,但QQ浏览器提示…

    2026年9月23日
    100

发表回复

登录后才能评论
关注微信