编辑代码

let data = [
  {
    label: 'Home',
    items: [
      { label: 'Dashboard', icon: 'pi pi-fw pi-home', routerLink: ['/'] },
    ],
  },
  {
    label: 'UI Components',
    items: [
      { label: 'Form Layout', icon: 'pi pi-fw pi-id-card', routerLink: ['/uikit/formlayout'] },
      { label: 'Input', icon: 'pi pi-fw pi-check-square', routerLink: ['/uikit/input'] },
      { label: 'Float Label', icon: 'pi pi-fw pi-bookmark', routerLink: ['/uikit/floatlabel'] },
      { label: 'Invalid State', icon: 'pi pi-fw pi-exclamation-circle', routerLink: ['/uikit/invalidstate'] },
      { label: 'Button', icon: 'pi pi-fw pi-mobile', routerLink: ['/uikit/button'], class: 'rotated-icon' },
      { label: 'Table', icon: 'pi pi-fw pi-table', routerLink: ['/uikit/table'] },
    ],
  },
  {
    label: 'Blocks',
    items: [
      { label: 'List', icon: 'pi pi-fw pi-list', routerLink: ['/uikit/list'] },
      { label: 'Tree', icon: 'pi pi-fw pi-share-alt', routerLink: ['/uikit/tree'] },
      { label: 'Panel', icon: 'pi pi-fw pi-tablet', routerLink: ['/uikit/panel'] },

      { label: 'Google', icon: 'pi pi-fw pi-globe', url: ['https://www.google.com'], target: '_blank' },
      { label: 'Bing', icon: 'pi pi-fw pi-comment', url: ['https://www.bing.com'] },

      {
        label: 'More',
        items: [
          { label: 'List', icon: 'pi pi-fw pi-list', routerLink: ['/uikit/list'] },

          { label: 'Google', icon: 'pi pi-fw pi-globe', url: ['https://www.google.com'], target: '_blank' },
          { label: 'Bing', icon: 'pi pi-fw pi-comment', url: ['https://www.bing.com'] },
        ],
      },
    ],
  },
]

let badges = {
  '/uikit/list': '23',
  'https://www.google.com': 'NEW',
}

var data2 = JSON.parse(JSON.stringify(data), function (k, v) {
  // 到顶层时返回
  if (k === '') {
    return v
  }

  if (k === 'items' && Array.isArray(v)) {
    v.forEach(function (item) {
      Object.keys(badges).forEach(function (badge) {
        // 处理 routerLink
        if (Array.isArray(item.routerLink) && item.routerLink.includes(badge)) {
          Object.assign(item, { badge: badges[badge] })
        }

        // 处理 url
        if (Array.isArray(item.url) && item.url.includes(badge)) {
          Object.assign(item, { badge: badges[badge] })
        }
      })
    })
  }
  return v
})

// 打印结果
console.log(JSON.stringify(data2, null, 2))