JS数据处理实战(三)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/q95548854/article/details/97641601

有如下需求:

  • 取出数据中所有的id

数据:

testObj = {
  id: 1,
  name: '一',
  children: [
    {
      id: 'zhinan',
      label: '指南',
      children: [{
        id: 'shejiyuanze',
        label: '设计原则',
        children: [{
          id: 'yizhi',
          label: '一致'
        }, {
          id: 'fankui',
          label: '反馈'
        }, {
          id: 'xiaolv',
          label: '效率'
        }, {
          id: 'kekong',
          label: '可控'
        }]
      }, {
        id: 'daohang',
        label: '导航',
        children: [{
          id: 'cexiangdaohang',
          label: '侧向导航'
        }, {
          id: 'dingbudaohang',
          label: '顶部导航'
        }]
      }]
    }, {
      id: 'zujian',
      label: '组件',
      children: [{
        id: 'basic',
        label: 'Basic',
        children: [{
          id: 'layout',
          label: 'Layout 布局'
        }, {
          id: 'color',
          label: 'Color 色彩'
        }]
      }, {
        id: 'form',
        label: 'Form',
        children: [{
          id: 'radio',
          label: 'Radio 单选框'
        }, {
          id: 'checkbox',
          label: 'Checkbox 多选框'
        }]
      }, {
        id: 'data',
        label: 'Data',
        children: [{
          id: 'table',
          label: 'Table 表格'
        }, {
          id: 'tag',
          label: 'Tag 标签'
        }]
      }, {
        id: 'notice',
        label: 'Notice',
        children: [{
          id: 'alert',
          label: 'Alert 警告'
        }, {
          id: 'loading',
          label: 'Loading 加载'
        }]
      }, {
        id: 'navigation',
        label: 'Navigation',
        children: [{
          id: 'menu',
          label: 'NavMenu 导航菜单'
        }]
      }, {
        id: 'others',
        label: 'Others',
        children: [{
          id: 'dialog',
          label: 'Dialog 对话框'
        }, {
          id: 'tooltip',
          label: 'Tooltip 文字提示'
        }]
      }]
    }, {
      id: 'ziyuan',
      label: '资源',
      children: [{
        id: 'jiaohu',
        label: '组件交互文档'
      }]
    }
  ]
}

答案:

新建一个 topic3.html, 将下列代码复制到其中:

<html>
	<head>
		<title>js数据处理实战(三)</title>
	</head>
	<body>

    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script>
      // 已有数据
      let testObj = {
        id: 1,
        name: '一',
        children: [
          {
            id: 'zhinan',
            label: '指南',
            children: [{
              id: 'shejiyuanze',
              label: '设计原则',
              children: [{
                id: 'yizhi',
                label: '一致'
              }, {
                id: 'fankui',
                label: '反馈'
              }, {
                id: 'xiaolv',
                label: '效率'
              }, {
                id: 'kekong',
                label: '可控'
              }]
            }, {
              id: 'daohang',
              label: '导航',
              children: [{
                id: 'cexiangdaohang',
                label: '侧向导航'
              }, {
                id: 'dingbudaohang',
                label: '顶部导航'
              }]
            }]
          }, {
            id: 'zujian',
            label: '组件',
            children: [{
              id: 'basic',
              label: 'Basic',
              children: [{
                id: 'layout',
                label: 'Layout 布局'
              }, {
                id: 'color',
                label: 'Color 色彩'
              }]
            }, {
              id: 'form',
              label: 'Form',
              children: [{
                id: 'radio',
                label: 'Radio 单选框'
              }, {
                id: 'checkbox',
                label: 'Checkbox 多选框'
              }]
            }, {
              id: 'data',
              label: 'Data',
              children: [{
                id: 'table',
                label: 'Table 表格'
              }, {
                id: 'tag',
                label: 'Tag 标签'
              }]
            }, {
              id: 'notice',
              label: 'Notice',
              children: [{
                id: 'alert',
                label: 'Alert 警告'
              }, {
                id: 'loading',
                label: 'Loading 加载'
              }]
            }, {
              id: 'navigation',
              label: 'Navigation',
              children: [{
                id: 'menu',
                label: 'NavMenu 导航菜单'
              }]
            }, {
              id: 'others',
              label: 'Others',
              children: [{
                id: 'dialog',
                label: 'Dialog 对话框'
              }, {
                id: 'tooltip',
                label: 'Tooltip 文字提示'
              }]
            }]
          }, {
            id: 'ziyuan',
            label: '资源',
            children: [{
              id: 'jiaohu',
              label: '组件交互文档'
            }]
          }
        ]
      }
      disposeData()
      function disposeData () {
        let ids = []
        ids.push(testObj.id)
        if (testObj.children && testObj.children.length) {
          getIds(testObj.children, ids)
        }
        console.log(ids) // 共30个id
      }
      function getIds (child, ids) {
        child.forEach(item => {
          ids.push(item.id)
          if (item.children && item.children.length) {
            getIds(item.children, ids)
          }
        })
      }

    </script>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/q95548854/article/details/97641601