递归结构的json取指定的值?

shenxiang11
  • 406

知道最后一级的值,比如:132 如何得到,从最上层父级开始所有的value
[310000, 310100, 310104, 132]

[
  {
    "label": "上海",
    "value": 310000,
    "children": [
      {
        "label": "上海",
        "value": 310100,
        "children": [
          {
            "label": "金山",
            "value": 310116,
            "children": [
              {
                "label": "测试123123",
                "value": 133
              }
            ]
          },
          {
            "label": "黄浦",
            "value": 310101,
            "children": [
              {
                "label": "测试播放系统",
                "value": 123
              },
              {
                "label": "DreamFitness",
                "value": 130
              }
            ]
          },
          {
            "label": "闵行",
            "value": 310112,
            "children": [
              {
                "label": "测试1",
                "value": 128
              },
              {
                "label": "纽绍客",
                "value": 129
              }
            ]
          },
          {
            "label": "浦东",
            "value": 310115,
            "children": [
              {
                "label": "兼容场馆",
                "value": 125
              }
            ]
          },
          {
            "label": "徐汇",
            "value": 310104,
            "children": [
              {
                "label": "美奂旗舰店",
                "value": 122
              },
              {
                "label": "开发测试",
                "value": 124
              },
              {
                "label": "欣欣向荣",
                "value": 126
              },
              {
                "label": "魏叶的场馆",
                "value": 127
              },
              {
                "label": "测试",
                "value": 131
              },
              {
                "label": "测试2",
                "value": 132
              }
            ]
          }
        ]
      }
    ]
  }
]
回复
阅读 1.2k
1 个回答
const fn = (arr, val) => {
  for (let i = 0; i < arr.length; i += 1) {
    const {value, children} = arr[i]
    if (value === val) return val
    if (!children) continue
    const n = fn(children, val)
    if (n) return [value].concat(n)
  }
  return false
}

若有帮助请 upvote 或采纳

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏