鍍金池/ 問(wèn)答/HTML/ 已有value拼接成的字符串,如何在樹(shù)形數(shù)據(jù)中匹配出相應(yīng)的key:value并保

已有value拼接成的字符串,如何在樹(shù)形數(shù)據(jù)中匹配出相應(yīng)的key:value并保存在數(shù)組中?

問(wèn)題描述

1.從后端已經(jīng)獲取到了數(shù)個(gè)部門(mén)UID拼接成的字符串,中間以“,”逗號(hào)隔開(kāi)
2.同時(shí)從后端獲取到了樹(shù)形數(shù)據(jù)(詳見(jiàn)代碼)

需求:將部門(mén)UID在樹(shù)形數(shù)據(jù)中匹配出UID及其label,以對(duì)象數(shù)組的形式儲(chǔ)存起來(lái),以供select下拉框使用

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

遍歷方法有錯(cuò)誤,讀取的數(shù)據(jù)不完整

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)
①部門(mén)UID字符串
str:"ADMIN,27cfb184cba7497f8bc34af8d228b988,712803a9c33e4110961ed40a113db874,0747714bf99b4cf2919ee73eb4ac7662"

②樹(shù)形數(shù)據(jù)(讀取數(shù)據(jù)中的id與text >>> 匹配儲(chǔ)存為label:value),如下:
------------------------- 樹(shù)形數(shù)據(jù) begin

[
{
"id": "ADMIN",
"checked": false,
"text": "數(shù)據(jù)中心",
"leaf": true,
"priority": -1,
"children": []},{"id": "27cfb184cba7497f8bc34af8d228b988",
"checked": false,
"text": "貸后管理",
"leaf": false,
"priority": 123,
"children": [
  {
    "id": "898f63e4fc144dc19abd973a403645e6",
    "checked": false,
    "text": "法律公司",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "aa5f74be66f04e62bbcea34717133624",
    "checked": false,
    "text": "墊息部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "bada5b2760ab4e879f9d7200536917b6",
    "checked": false,
    "text": "催討部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "cb781db8f4e84ad7b0570eca9960a954",
    "checked": false,
    "text": "合同管理部",
    "leaf": true,
    "priority": 1,
    "children": []}]},{"id": "f3cdf3e6949b49c19b624eee6a08f0e8",
"checked": false,
"text": "業(yè)務(wù)部",
"leaf": false,
"priority": 123,
"children": [
  {
    "id": "0747714bf99b4cf2919ee73eb4ac7662",
    "checked": false,
    "text": "業(yè)務(wù)二部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "712803a9c33e4110961ed40a113db874",
    "checked": false,
    "text": "業(yè)務(wù)一部",
    "leaf": true,
    "priority": 123,
    "children": []
  }
]}]

------------------------- 樹(shù)形數(shù)據(jù) end

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

我想得到這種數(shù)據(jù)格式:

 BGuidArr: [
    {
      label: "管理中心",
      value: "ADMIN"
    },
    {
      lable: "借方管理",
      value: "27cfb184cba7497f8bc34af8d228b988"
    },
    {
      lable: "渠道管理",
      value: "712803a9c33e4110961ed40a113db874"
    },
    {
      lable: "法務(wù)中心",
      value: "0747714bf99b4cf2919ee73eb4ac7662"
    }
  ],

回答
編輯回答
故人嘆

就是搞一個(gè)方法遍歷數(shù)組,然后如果有children就再用children調(diào)用一次,所有出現(xiàn)過(guò)的數(shù)據(jù)都push到一個(gè)地方,最后輸出這個(gè)結(jié)果。

str="ADMIN,27cfb184cba7497f8bc34af8d228b988,712803a9c33e4110961ed40a113db874,0747714bf99b4cf2919ee73eb4ac7662".split(',');

((_list)=>{
    var arr = [];
    var _fun = (__arr)=>{
        __arr.forEach(v=>{
            if(!!~str.indexOf(v.id)) arr.push({label:v.text,value:v.id})
            if(v.children.length) _fun(v.children)
        });
    }
    _fun(_list);
    return arr
})([
{
"id": "ADMIN",
"checked": false,
"text": "數(shù)據(jù)中心",
"leaf": true,
"priority": -1,
"children": []},{"id": "27cfb184cba7497f8bc34af8d228b988",
"checked": false,
"text": "貸后管理",
"leaf": false,
"priority": 123,
"children": [
  {
    "id": "898f63e4fc144dc19abd973a403645e6",
    "checked": false,
    "text": "法律公司",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "aa5f74be66f04e62bbcea34717133624",
    "checked": false,
    "text": "墊息部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "bada5b2760ab4e879f9d7200536917b6",
    "checked": false,
    "text": "催討部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "cb781db8f4e84ad7b0570eca9960a954",
    "checked": false,
    "text": "合同管理部",
    "leaf": true,
    "priority": 1,
    "children": []}]},{"id": "f3cdf3e6949b49c19b624eee6a08f0e8",
"checked": false,
"text": "業(yè)務(wù)部",
"leaf": false,
"priority": 123,
"children": [
  {
    "id": "0747714bf99b4cf2919ee73eb4ac7662",
    "checked": false,
    "text": "業(yè)務(wù)二部",
    "leaf": true,
    "priority": 123,
    "children": []
  },
  {
    "id": "712803a9c33e4110961ed40a113db874",
    "checked": false,
    "text": "業(yè)務(wù)一部",
    "leaf": true,
    "priority": 123,
    "children": []
  }
]}])
2018年6月1日 20:16
編輯回答
冷眸

點(diǎn)擊鏈接后打開(kāi)控制臺(tái)查看結(jié)果
https://codepen.io/vizocn/pen...

2018年3月8日 22:15