当前位置: 首页 > news >正文

重构多重children数据 减少数据

为了将给定的数据结构从使用 keytitle 转换为使用 valuelabel,并且确保子节点(如果有的话)也遵循相同的结构,你可以使用JavaScript的map方法来遍历数组并重构每个对象。这里是如何做的:

const originalData = [{key: "1181175685528424448",title: "智享无界科技有限公司",value: "1181175685528424448",children: [{children: null,title: "上海技术部",value: "1181175865409540096",key: "1181175865409540096"},{children: null,title: "上海技术部1",value: "11811758654095400961",key: "11811758654095400961"}]}
];function transformData(data) {return data.map(item => ({value: item.value,label: item.title, // 假设你希望将"title"改为"有来智享无界科技有限公司",则直接替换此值children: item.children ? transformData(item.children) : null}));
}const transformedData = transformData(originalData);// 如果需要将"智享无界科技有限公司"改为"有来智享无界科技有限公司",你可以在这里进行额外的处理
// 但在这个例子中,我们直接保留原始的title值console.log(transformedData);

然而,如果你确实需要将特定的title值(如"智享无界科技有限公司")替换为"有来智享无界科技有限公司",你可以在transformData函数中添加一个条件判断:

function transformData(data) {return data.map(item => ({value: item.value,label: item.title === "智享无界科技有限公司" ? "有来智享无界科技有限公司" : item.title,children: item.children ? transformData(item.children) : null}));
}

这样,输出就会按照你的要求,将特定的title值替换掉。不过,请注意,这只会替换顶级元素的title,如果你的数据结构中还有嵌套的、且title值也为"智享无界科技有限公司"的元素,它们也会被替换。如果你只想替换顶级元素的title,你可能需要添加额外的逻辑来区分处理。
在JavaScript中,对象的属性名(如key)在大多数情况下是大小写敏感的。然而,如果你想要将对象中的属性名从key改为Key(注意大小写变化),你需要遍历数组和对象,并创建新的对象来反映这一更改。由于直接修改现有对象的属性名是不可能的(除非使用Object.defineProperty来重新定义属性,但这在简单重构中通常不是必要的),以下是一个简单的函数来实现这一点:

const originalData = [{key: "1181175685528424448",title: "智享无界科技有限公司",value: "1181175685528424448",children: [{children: null,title: "上海技术部",value: "1181175865409540096",key: "1181175865409540096"},{children: null,title: "上海技术部1",value: "11811758654095400961",key: "11811758654095400961"}]}
];function transformKeysToUpperCase(data) {return data.map(item => {const newItem = { ...item }; // 浅拷贝原始对象// 更改key属性名为Keyif (newItem.hasOwnProperty('key')) {newItem.Key = newItem.key;delete newItem.key; // 删除原始key属性}// 递归处理childrenif (newItem.children) {newItem.children = transformKeysToUpperCase(newItem.children);}return newItem;});
}const transformedData = transformKeysToUpperCase(originalData);console.log(transformedData);

在这个例子中,transformKeysToUpperCase函数接受一个数组作为输入,并返回一个新的数组,其中每个对象的key属性都被重命名为Key(同时保留了原始对象的其他属性)。如果对象有children属性,则递归地对其执行相同的操作。

请注意,这个函数使用了展开语法(...item)来创建一个新对象,它包含原始对象的所有属性,但随后通过条件检查来添加或删除特定的属性。这种方法保留了除keyKey转换之外的所有原始数据。


http://www.mrgr.cn/news/12684.html

相关文章:

  • 一道关于php文件包含的CTF题
  • 浅析车辆类型检测算法实际应用车辆类型检测算法源码
  • 【Python机器学习】NLP词中的数学——齐普夫定律
  • 设计模式(一):七大原则
  • 基于x86 平台opencv的图像采集和seetaface6的眼睛状态检测(睁眼,闭眼)功能
  • 用ESP32做一个可爱的无用机器人
  • 小程序常用界面交互api
  • CAPL——定时器用法
  • Web中的Cookie与Session
  • SQLi-LABS 通关攻略【36-40】
  • VMware Workstation虚拟机 + 许可证密钥
  • Django 第七课 -- 视图
  • 【IDEA】一键重启多个服务
  • 答题小程序的轮播图管理与接入获取展示实现
  • Apache PDFBox
  • Dijkstra(c++)
  • PLM产品生命周期管理系统有哪些功能特点?PLM系统有哪些推荐
  • 在URL链接中指定浏览器跳转到PDF文件的指定页码
  • 【AI大模型】提示词(Prompt)全面解析
  • 2024年汽车零部件企业CRM研究:服务商排名、案例分析、需求分析