树型数据结构非常常用,对于一般数据需要求深度(即有多少层)来限制数据的添加的需求。
// 获取树的深度
function handleGetTreeDeep ( tree ) {
let deep = 0;
tree.forEach( ( item ) => {
if ( item.children ) {
deep = Math.max( deep, handleGetTreeDeep( item.children ) + 1 );
} else {
deep = Math.max( deep, 1 );
}
} );
return deep;
}
// 获取树的广度
function handleGetTreeExtent ( tree ) {
let extend = 0;
tree.forEach( ( item ) => {
if ( item.children ) {
extend += handleGetTreeExtent( item.children );
} else {
extend += 1;
}
} );
return extend;
}
传递的数据只需要包含childern字段。