首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更有效和更短的JS代码?

更有效和更短的JS代码?
EN

Stack Overflow用户
提问于 2018-08-29 05:43:26
回答 1查看 60关注 0票数 -1

在这项任务中我需要一些建议。

我们有这样的结构:

代码语言:javascript
运行
复制
const scenes = {
  'Node1': {
    'scene1': [
      {
        nodeKey: 'cccc',
        category: 'user',
      },
      {
        nodeKey: 'eeee',
        category: 'interface',
      },
    ]
  },
}

我需要这样做:

代码语言:javascript
运行
复制
let result = {
  'Node1': {
    'scene1': {
      'cccc': {
        nodeKey: 'cccc',
        category: 'user',
      }
    }
  }
}

我使用reduce函数来使其工作。但我认为它可以更有效地完成。谢谢!

我的代码(更新):

代码语言:javascript
运行
复制
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)函数会更好。嗯

代码语言:javascript
运行
复制
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
    }
  }, {})
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52066581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档