本文主要是介绍重构多重children数据 减少数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了将给定的数据结构从使用 key
和 title
转换为使用 value
和 label
,并且确保子节点(如果有的话)也遵循相同的结构,你可以使用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
)来创建一个新对象,它包含原始对象的所有属性,但随后通过条件检查来添加或删除特定的属性。这种方法保留了除key
到Key
转换之外的所有原始数据。
这篇关于重构多重children数据 减少数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!