在这项任务中我需要一些建议。
我们有这样的结构:
const scenes = {
'Node1': {
'scene1': [
{
nodeKey: 'cccc',
category: 'user',
},
{
nodeKey: 'eeee',
category: 'interface',
},
]
},
}我需要这样做:
let result = {
'Node1': {
'scene1': {
'cccc': {
nodeKey: 'cccc',
category: 'user',
}
}
}
}我使用reduce函数来使其工作。但我认为它可以更有效地完成。谢谢!
我的代码(更新):
function makeNewStructure(scenes) {
return Object.keys(scenes).reduce((prevNode, currentNode) => ({
...prevNode,
[currentNode]: Object.keys(scenes[currentNode]).reduce((prevScene, currentScene) => ({
...prevScene,
[currentScene]: scenes[currentNode][currentScene].reduce((previous, current) => ({
...previous,
[current.nodeKey]: current
}),{})
}), {})
}), {})
}或者我们可以这样做。但我认为使用reduce (only)函数会更好。嗯
function makeNewStructure(scenes) {
return Object.keys(scenes).reduce((prevNode, currentNode) => {
let node = {}
let currentScenesInNode = scenes[currentNode]
for (let scene in currentScenesInNode) {
let updatedScene = {}
currentScenesInNode[scene].forEach(item => {
return updatedScene[item.nodeKey] = item
})
node[scene] = updatedScene
}
return {
...prevNode,
[currentNode]: node
}
}, {})
}https://stackoverflow.com/questions/52066581
复制相似问题