规范化深层嵌套数据
Posted
技术标签:
【中文标题】规范化深层嵌套数据【英文标题】:Normalize Deep nested data 【发布时间】:2021-10-04 15:56:43 【问题描述】:我需要用深度嵌套的结构规范化 api 响应数据。 我正在使用这个https://github.com/paularmstrong/normalizr 来规范我的数据。
我有一个输入数据
const data = [
id: 'component1,
name: 'component one,
properties:[
name: 'text',
color: 'red'
]
,
id: 'component2,
name: 'component two',
properties:[
name: 'text',
color: 'yellow'
,
name: 'button',
color: 'blue'
]
]
标准化后的预期输出
entities:
component1:
id: 'component1,
name: 'component one,
properties:
entities:
text:
name: 'text',
color: 'red'
,
results: ['text']
,
component2:
id: 'component2,
name: 'component two,
properties:
entities:
text:
name: 'text',
color: 'yellow'
,
button:
name: 'button',
color: 'blue'
,
results: ['text', 'button']
,
results: ['component1', 'component2']
请帮忙
【问题讨论】:
【参考方案1】:这是我的方法,使用forEach()
迭代所有数据,以便以您想要的格式重新排列:
const data = [id: 'component1',name: 'component one',properties:[name: 'text',color: 'red'],id: 'component2',name: 'component two',properties:[name: 'text',color: 'yellow',name: 'button',color: 'blue']];
let result = entities: , result: [];
data.forEach(c =>
result.result.push(c.id);
result.entities[c.id] =
id: c.id,
name: c.name,
properties:
entities: Object.fromEntries(c.properties.map(p => [p.name, p])),
results: c.properties.map(p => p.name)
;
);
console.log(result);
【讨论】:
以上是关于规范化深层嵌套数据的主要内容,如果未能解决你的问题,请参考以下文章