> 文档中心 > JavaScript递归实现树形添加属性、目录、修改数据类型、recursion、toString、typeof 、for in

JavaScript递归实现树形添加属性、目录、修改数据类型、recursion、toString、typeof 、for in

目录

  • 1、数据
  • 2、实现
  • 3、效果

1、数据

let treeData = [{id: 1,aname: '邓稼先',value: '核物理学家',age: 1924,children: [{id: 11,aname: '袁隆平',value: '杂交水稻育种专家',age: 1930,children: []}]}, {id: 2,aname: '钱学森',value: '空气动力学家',age: 1991,children: [{id: 22,aname: '李四光',value: '地质学家',age: 1889,children: [{id: 222,aname: '于敏',value: '核物理学家',age: 1926,children: []}]}]}, {id: 3,aname: '华罗庚',value: '数学家',age: 1910,children: [{id: 33,aname: '钱三强',value: '核物理学家',age: 1913,children: []}]}];

2、实现

function treeRecursion(data) {for (let key in data) {// 因为for in遍历的是对象 // 所以只需要让key等于id对数据修改即可 // 否则有多少个属性就要修改多少次 // 浪费性能且报错 // 一个已是Sring类型的数据再使用toString会报错if (key === "id") {// 把数字类型转为字符串data['age'] = data['age'].toString();// 添加新属性data['scientist'] = data['aname'] + '是' + data['value'] + '。';data['introduce'] = `${data['aname']}出生于 ${data[key]} 年。`;};if (typeof data[key] == "object") treeRecursion(data[key]);};return data;};console.log(treeRecursion(treeData)); // 输出结果

3、效果

输出结果