zoukankan      html  css  js  c++  java
  • js算法题,树状数据倒推

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
      <body>
        <script>
          // 基础数据
          const categoryData = [
            {
              value: '1',
              label: '职业教育',
              children: [
                {
                  value: '11',
                  label: 'IT/互联网',
                  children: [
                    {
                      value: '111',
                      label: '电商运营',
                    },
                    {
                      value: '112',
                      label: '产品经理',
                    },
                  ],
                },
              ],
            },
          ]
    
          // 目标数据
          const res = [
              {
                id: 0,
                value: ['1', '11', '112'],
                label: ['职业教育', 'IT/互联网', '产品经理'],
              },
              {
                id: 1,
                value: ['1', '11', '111'],
                label: ['职业教育', 'IT/互联网', '电商运营'],
              },
            ]
    
          // 已知数据
          const myData = '111,112,111'
    
          //倒推
          const categoryAnalse = ({ categoryOptions, cateid3 }) => {
            console.log(categoryOptions, cateid3)
    
            const findWrap = (value, index) => {
              const temp = {
                id: index,
                value: [],
                label: [],
              }
              let tempClone
              const find = (arr) => {
                for (let i = 0; i < arr.length; i++) {
                  if (arr[i].children) {
                    temp.value.push(arr[i].value)
                    temp.label.push(arr[i].label)
                    find(arr[i].children)
                  } else {
                    if (arr[i].value === value) {
                      temp.value.push(value)
                      temp.label.push(arr[i].label)
                      tempClone = JSON.parse(JSON.stringify(temp))
                    }
                  }
                }
                temp.value.pop()
                temp.label.pop()
              }
              find(categoryOptions)
              return tempClone
            }
    
            const cateid3Arr = cateid3.split(',')
            const result = cateid3Arr.map((item, index) => {
              return findWrap(item, index)
            })
            console.log(result)
            return result
          }
    
          categoryAnalse({categoryOptions: categoryData, cateid3: myData})
        </script>
      </body>
    </html>
    

  • 相关阅读:
    每日一库:ZeroClipboard.js
    每日一库:Zepto.js
    每日一库:microAjax.js
    浏览器渲染方面资料
    MongoDB语法
    使用jquery选中文本(包括输入框input和文本框textarea)
    asp.net 将数据静态化
    TreeView 节点
    asp.net导出数据到word或者excel
    C# 把数组转换成DataSet数据类型
  • 原文地址:https://www.cnblogs.com/xutongbao/p/15264349.html
Copyright © 2011-2022 走看看