Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从子';javascript/vuejs中的s Id_Javascript_Node.js_Vuejs2 - Fatal编程技术网

如何从子';javascript/vuejs中的s Id

如何从子';javascript/vuejs中的s Id,javascript,node.js,vuejs2,Javascript,Node.js,Vuejs2,所以我有这个json { "account_owner": "", "account_type": "", "nest_uid": "17_15_1536914882_yhHDzQsDSI", "business_name": "", "sync_block": false, "validation": { "isError": false, "inputList": [], "message": "

所以我有这个json

{
    "account_owner": "",
    "account_type": "",
    "nest_uid": "17_15_1536914882_yhHDzQsDSI",
    "business_name": "",
    "sync_block": false,
    "validation": {
        "isError": false,
        "inputList": [],
        "message": ""
    },
    "is_selected": true,
    "contacts": [{
            "con_title": "",
            "con_fName": "",
            "con_lName": "",
            "con_job_title": "",
            "is_selected": true,
            "emails": [{
                "email": "",
                "type": "",
                "primary": false,
                "is_selected": true,
                "nest_uid": "17_15_1536914882_yhHDzQsDSK",
                "validation": {
                    "isError": false,
                    "inputList": [],
                    "message": "",
                    "is_selected": true
                },
                "checked": false
            }],
            "phones": [{
                "phone": "",
                "type": "",
                "primary": false,
                "is_selected": true,
                "nest_uid": "17_15_1536914882_uHN38SxJ3s",
                "validation": {
                    "isError": false,
                    "inputList": [],
                    "is_selected": true,
                    "message": ""
                },
                "checked": false
            }],
            "nest_uid": "17_15_1536914882_hwzB7dIn9v",
            "checked": false
        },
        {
            "con_title": "",
            "con_fName": "",
            "con_lName": "",
            "con_job_title": "",
            "is_selected": true,
            "emails": [{
                "email": "",
                "type": "",
                "primary": false,
                "is_selected": true,
                "nest_uid": "17_15_1536914882_yhHDzQsDSx",
                "validation": {
                    "isError": false,
                    "is_selected": true,
                    "inputList": [],
                    "message": ""
                },
                "checked": false
            }],
            "phones": [{
                "phone": "",
                "type": "",
                "primary": false,
                "is_selected": true,
                "nest_uid": "17_15_1536914882_uHN38SxJ3Y",
                "validation": {
                    "isError": false,
                    "is_selected": true,
                    "inputList": [],
                    "message": ""
                },
                "checked": false
            }],
            "nest_uid": "17_15_1536914882_hwzB7dIn9x",
            "checked": false
        }
    ]
}
您可以看到,每个级别上都有两个属性

  • nest\u uid

  • 已被选中

  • 现在我得到了子元素的
    嵌套uid
    ,因此我需要将所有
    都标记为false,除了选中的一个及其父元素

    比如说

    如果
    nest_id='17_15_1536914882_yhHDzQsDSK'

    输出

    {
        "account_owner": "",
        "account_type": "",
        "nest_uid": "17_15_1536914882_yhHDzQsDSI",
        "business_name": "",
        "sync_block": false,
        "validation": {
            "isError": false,
            "inputList": [],
            "message": ""
        },
        "is_selected": true,//here
        "contacts": [{
                "con_title": "",
                "con_fName": "",
                "con_lName": "",
                "con_job_title": "",
                "is_selected": true, //here 
                "emails": [{
                    "email": "",
                    "type": "",
                    "primary": false,
                    "is_selected": true,
                    "nest_uid": "17_15_1536914882_yhHDzQsDSK", //here
                    "validation": {
                        "isError": false,
                        "inputList": [],
                        "message": "",
                        "is_selected": true
                    },
                    "checked": false
                }],
                "phones": [{
                    "phone": "",
                    "type": "",
                    "primary": false,
                    "is_selected": false,
                    "nest_uid": "17_15_1536914882_uHN38SxJ3s",
                    "validation": {
                        "isError": false,
                        "inputList": [],
                        "is_selected": true,
                        "message": ""
                    },
                    "checked": false
                }],
                "nest_uid": "17_15_1536914882_hwzB7dIn9v",
                "checked": false
            },
            {
                "con_title": "",
                "con_fName": "",
                "con_lName": "",
                "con_job_title": "",
                "is_selected": false,
                "emails": [{
                    "email": "",
                    "type": "",
                    "primary": false,
                    "is_selected": false,
                    "nest_uid": "17_15_1536914882_yhHDzQsDSx",
                    "validation": {
                        "isError": false,
                        "is_selected": false,
                        "inputList": [],
                        "message": ""
                    },
                    "checked": false
                }],
                "phones": [{
                    "phone": "",
                    "type": "",
                    "primary": false,
                    "is_selected": false,
                    "nest_uid": "17_15_1536914882_uHN38SxJ3Y",
                    "validation": {
                        "isError": false,
                        "is_selected": false,
                        "inputList": [],
                        "message": ""
                    },
                    "checked": false
                }],
                "nest_uid": "17_15_1536914882_hwzB7dIn9x",
                "checked": false
            }
        ]
    }
    

    递归确实是这里的答案。这样的东西应该有用,即使它不是最漂亮的:

    function selectInJSON(uid, current) {
      current.is_selected = current.nest_uid === uid
    
      Object.values(current).forEach((child) => {
          if (Array.isArray(child)) {
            child.forEach((item) => {
              selectInJSON(uid, item)
              if (item.is_selected) current.is_selected = true
            })
          }
          else if (Object(child) === child) {
            selectInJSON(uid, child)
            if (child.is_selected) current.is_selected = true
          }
      })
    }
    

    递归确实是这里的答案。这样的东西应该有用,即使它不是最漂亮的:

    function selectInJSON(uid, current) {
      current.is_selected = current.nest_uid === uid
    
      Object.values(current).forEach((child) => {
          if (Array.isArray(child)) {
            child.forEach((item) => {
              selectInJSON(uid, item)
              if (item.is_selected) current.is_selected = true
            })
          }
          else if (Object(child) === child) {
            selectInJSON(uid, child)
            if (child.is_selected) current.is_selected = true
          }
      })
    }
    

    你必须采取递归的方法,不能用简单的过滤器解决。这个JSON结构是否像你在问题中发布的那样固定?@SivcanSingh是的,嵌套uid是固定的,选择的是我为了创建场景而添加的hwat,所以基本上我只想向用户显示立即树,隐藏所有其他内容你必须采用递归方法,不能用简单的过滤器解决。这个JSON结构是否如你在问题中所发布的那样固定?@SivcanSingh是的,嵌套uid是固定的,所选的是为了创建场景而添加的hwat,所以基本上我只想向用户显示即时树,隐藏所有其他元素该代码是否也会使所有其他元素为false?它是否会返回任何内容?它会在适当的位置修改对象。如果您想返回它,您必须使其不可变或进行深度克隆。如果它对你有用,别忘了把答案标为正确!这段代码是否也会使其他所有元素都为false?它是否会返回任何内容?它会就地修改对象。如果您想返回它,您必须使其不可变或进行深度克隆。如果它对你有用,别忘了把答案标为正确!