JavaScript:修改嵌套数组中所有对象的键名
解决嵌套对象的键名转换问题
这事儿用递归处理最靠谱,毕竟你的嵌套层级是不确定的,递归能一层层钻进去搞定每一层的键名转换。我给你写个直接能用的函数:
// 定义递归转换函数 function transformPackage(pkg) { // 提取原对象的属性,children是可选字段 const { id, name, children } = pkg; // 构建转换后的基础对象 const transformed = { key: id, title: name }; // 如果存在children,递归处理这个子对象 if (children) { transformed.children = transformPackage(children); } return transformed; } // 处理整个原数组 const transformedPackages = packages.map(pkg => transformPackage(pkg)); // 可以用console.log查看转换结果 console.log(transformedPackages);
代码说明:
transformPackage函数负责处理单个对象:把id替换成key,name替换成title,然后检查是否有children属性,有就递归调用自身处理子对象。- 用数组的
map方法遍历原数组,对每个元素应用转换函数,就能得到全层级转换后的新数组。
拿你给的原数组测试,转换后第一个元素就是你想要的格式:
{ key: '641a1690-6c8b-4ada-ae97-8d82cc4fe7a3', title: 'com.sample', children: { key: 'd7384f60-e4ab-4a86-8e2e-0f66cc32f', title: 'child.computer.com', children: { key: 'e4ab-4a86-0f66cc32f560', title: 'child.com' } } }
要是你的children偶尔会是数组(虽然你例子里是单个对象,但提前做个兼容),只要把递归部分改成children.map(transformPackage)就行,这样就能处理子数组的情况了。
内容的提问来源于stack exchange,提问作者Jelena R
相关产品推荐
相关产品推荐

