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


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、效果

输出结果

猜你喜欢

转载自blog.csdn.net/weixin_51157081/article/details/115533854