一个包含嵌套递归数据结构的对象的排序实现

简介: 一个包含嵌套递归数据结构的对象的排序实现

本文和SAP Spartacus这个开源项目的一个issue有关:


https://github.com/SAP/spartacus/issues/9353


待排序的数据结构:人(Person)

image.png



person有一个字段children,类型为一个数组,类型也是person.


任务:


写一个排序函数,输入参数为person类型的变量,将其children属性里包含的person数组的元素进行递归排序。


完整源代码:


// Import stylesheets
import "./style.css";
// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById("app");
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;
interface person {
  id: number;
  name: string;
  age: number;
  children?: Array<person>;
}
let person1: person = { id: 1, name: "二十岁", age: 20, children: [] };
let person2: person = { id: 2, name: "三十岁", age: 30 };
let person3: person = { id: 3, name: "十八岁", age: 18, children: [] };
let person4: person = { id: 4, name: "四十岁", age: 40 };
let person11: person = { id: 21, name: "二十岁小伙子1", age: 21 };
let person12: person = { id: 22, name: "二十岁小伙子2", age: 27 };
let person13: person = { id: 23, name: "二十岁小伙子3", age: 20 };
let person31: person = { id: 31, name: "三十岁小伙子1", age: 35 };
let person32: person = { id: 32, name: "三十岁小伙子2", age: 34 };
let person33: person = { id: 33, name: "三十岁小伙子3", age: 37 };
person1.children.push(person11);
person1.children.push(person12);
person1.children.push(person13);
person3.children.push(person31);
person3.children.push(person32);
person3.children.push(person33);
let god: person = { id: 0, name: "上帝", age: 0, children: [] };
god.children.push(person1);
god.children.push(person2);
god.children.push(person3);
god.children.push(person4);
const forSPASort = (input: person) => {
  let result: person;
  if (input.children) {
    input.children.sort(sorter);
    input.children.forEach(child => {
      forSPASort(child);
    });
  }
  return input;
};
const sorter = (a, b) => {
  console.log("Jerry, a: " + a.name + " b: " + b.name);
  return a.age - b.age;
};
const result = forSPASort(god);
console.log("result: " + result);


相关文章
|
4天前
|
存储 缓存 NoSQL
深入浅出Redis(一):对象与数据结构
深入浅出Redis(一):对象与数据结构
|
7天前
【数据结构】二叉树(遍历,递归)
【数据结构】二叉树(遍历,递归
15 2
|
3天前
|
算法 搜索推荐 索引
数据结构与算法 排序(下)
数据结构与算法 排序(下)
10 1
|
3天前
|
缓存 算法 搜索推荐
数据结构与算法 排序(上)
数据结构与算法 排序(上)
9 0
[数据结构]-玩转八大排序(二)&&冒泡排序&&快速排序
[数据结构]-玩转八大排序(二)&&冒泡排序&&快速排序
|
7天前
|
搜索推荐 算法 C++
[数据结构]-玩转八大排序(一)&&插入排序&&选择排序
[数据结构]-玩转八大排序(一)&&插入排序&&选择排序
|
7天前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
11 0
|
7天前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
9 0
|
7天前
|
C语言
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
12 0
|
7天前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
14 4