es-grid-template
Version:
es-grid-template
22 lines • 547 B
JavaScript
import isLeafNode from "./isLeafNode";
/** Sort data with tree structure.
* layeredSort is a recursive process: for each parent node in the tree,
* this function will sort its children array.
*/
export default function layeredSort(array, compare) {
return dfs(array);
function dfs(rows) {
if (!Array.isArray(array)) {
return array;
}
return rows.map(row => {
if (isLeafNode(row)) {
return row;
}
return {
...row,
children: dfs(row.children)
};
}).sort(compare);
}
}