键值映射

# 有这样一个数组,需要将里面的键值name替换为label,sons替换为children

const data = [

      {

        'id': 1,

        'name': '互联网应用'

      },

      {

        'id': 2,

        'name': '安全设备',

        'sons': [

          {

            'id': 3,

            'name': '防火墙',

            'sons': [{

              'id': 1,

              'name': '安全设备'

            }]

          },

          {

            'id': 4,

            'name': '路由器',

            'sons': [

              {

                'id': 1,

                'name': '安全设备'

              }

            ]

          }

        ]

      },

      {

        'id': 5,

        'name': '终端',

        'sons': [

          {

            'id': 6,

            'name': '电脑'

          },

          {

            'id': 7,

            'name': '打印机'

          },

          {

            'id': 8,

            'name': '扫描仪'

          }

        ]

      }

    ]

# 定义替换键值对

    keyMap: {

        name: 'label',

        id:'value',

        sons: 'children'

    },

# 键值替换函数

    replaceKey(obj) {

      for (const key in obj) {

        const newKey = this.keyMap[key]

        if (newKey) {

          obj[newKey] = obj[key]

          delete obj[key]

        }

      }

    },

# 由于数组对象中sons的究竟有几级不能确定,故递归进行键值替换操作

    loop(data) {

      data.forEach(item => {

        console.log(item)

        const obj = item

        this.replaceKey(obj)

        if (item.children && item.children.length) {

          this.loop(item.children)

        }

      })

      console.log(data)

    },

# 完成替换

this.loop(data)

你可能感兴趣的:(键值映射)