const transferTree = () => {
interface Person {
name: string
age: number
parent: string | null
children?: Person[]
}
const csv = `
name,age,parent
Bob,30,David
David,60,
Anna,10,Bob
`
const change = (csv: string): Person[] => {
const lines = csv
.trim()
.split('\n')
.map(line => line.trim().split(','))
console.log('lines', lines)
const headers = lines[0]
const data = lines.slice(1)
const people: { [name: string]: Person } = {}
for (const row of data) {
const person: Person = {
name: row[0],
age: Number(row[1]),
parent: row[2] || null,
children: [],
}
people[person.name] = person
}
for (const person of Object.values(people)) {
if (person.parent) {
const parent = people[person.parent]
parent?.children?.push(person)
}
}
return Object.values(people).filter(person => !person.parent)
}
const tree = change(csv)
console.log(tree)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
2021-03-09 伪类选择器和伪元素选择器的区别