【发布时间】:2021-01-19 20:41:15
【问题描述】:
给定以下两个json对象,其中files代表一个目录数组,colourCodes代表一个颜色到status的映射,我想处理文件数组(其实就是一个目录列表) 来确定目录结构。在每个file 中,folderColorRgb 映射到一个状态(可以从colourCodes 常量中查找状态 - 如果colourCodes 中不存在颜色,则状态为Not covered)。
const colourCodes = {
'#4986e7': 'Covered 100%',
'#f83a22': 'Covered - weak',
}
const files = [
{
id: '1nn7_JlbwQCxyz7qecqEtbWvY4C9Q2S3M',
name: 'cell biology',
parents: [ '1YewXh1WkIVIxOuHTV9acYG7WDE55EnPR' ],
},
{
id: '1bcNxav7kq--E1Qabu3tcXk9DxvRdCcgR',
name: 'ecology',
parents: [ '1YewXh1WkIVIxOuHTV9acYG7WDE55EnPR' ],
folderColorRgb: '#4986e7'
},
{
id: '1MmkaP5xveClf6BfrhjHyYv4Q_Vaq1vf_',
name: 'infection and response',
parents: [ '1YewXh1WkIVIxOuHTV9acYG7WDE55EnPR' ],
folderColorRgb: '#8f8f8f'
},
{
id: '1YewXh1WkIVIxOuHTV9acYG7WDE55EnPR',
name: 'biology',
parents: [ '1WVm7S1fw8Neg7FM80QNxcMWvVc_w_Jt2' ],
folderColorRgb: '#16a765'
},
{
id: '1WVm7S1fw8Neg7FM80QNxcMWvVc_w_Jt2',
name: 'science',
parents: [ '0AF24wY_V36dlUk9PVA' ],
folderColorRgb: '#a47ae2'
},
{
id: 'physics-id',
name: 'physics',
parents: [ '1WVm7S1fw8Neg7FM80QNxcMWvVc_w_Jt2' ],
folderColorRgb: '#16a765'
},
{
id: 'electricity-id',
name: 'electricity',
parents: [ 'physics-id' ],
folderColorRgb: '#f83a22'
},
]
我想要达到的结果如下:
{
science: {
biology: {
'cell biology': { status: 'Not covered' },
ecology: { status: 'Covered 100%' },
'infection and response': { status: 'Not covered' },
},
physics: { electricity: { status: 'Covered - weak' } },
},
}
所以它是 JSON 中表示的 files 数组的文件夹结构。你可以做以下假设
- 每个文件的
parents数组将始终包含一个parentId,即指向父文件夹的链接。 - 所有
parentId's在文件数组中都以id的形式存在 - 除了顶级目录(例如,在这种情况下为科学,files中不存在科学的 parentId。
有人知道实现这一目标的好方法吗?
【问题讨论】:
标签: javascript node.js json functional-programming