Skip to content

@longmo-utils/common / sortTree

Function: sortTree()

ts
function sortTree<T>(
   treeData, 
   sortFunction, 
   options?): T[];

对树形结构数据进行递归排序

对树形结构的每一层节点应用排序函数,保持层级结构

Type Parameters

Type ParameterDescription
T extends Record<string, any>树节点类型,必须是对象类型

Parameters

ParameterTypeDescription
treeDataT[]树形数据数组
sortFunction(a, b) => number排序函数,用于定义排序规则
options?TreeConfigOptions配置选项

Returns

T[]

排序后的树形数据

Examples

typescript
const tree = [
  { id: 3, name: 'C', children: [{ id: 5, name: 'E' }] },
  { id: 1, name: 'A', children: [{ id: 4, name: 'D' }, { id: 2, name: 'B' }] }
];

const result = sortTree(tree, (a, b) => a.id - b.id);
console.log(result);
// [
//   { id: 1, name: 'A', children: [
//     { id: 2, name: 'B' },
//     { id: 4, name: 'D' }
//   ]},
//   { id: 3, name: 'C', children: [{ id: 5, name: 'E' }] }
// ]
typescript
const tree = [
  { name: 'Zebra', children: [{ name: 'Y' }] },
  { name: 'Apple', children: [{ name: 'Beta' }] }
];

const result = sortTree(tree, (a, b) => a.name.localeCompare(b.name));
console.log(result);
// [
//   { name: 'Apple', children: [{ name: 'Beta' }] },
//   { name: 'Zebra', children: [{ name: 'Y' }] }
// ]
typescript
const tree = [
  { priority: 2, tasks: [{ priority: 3 }] },
  { priority: 1, tasks: [{ priority: 2 }] }
];

const result = sortTree(
  tree,
  (a, b) => a.priority - b.priority,
  { childProps: 'tasks' }
);

Released under the MIT License.