如何在JavaScript中搜索嵌套Json中的值
我需要什么如何在JavaScript中搜索嵌套Json中的值,javascript,json,angular,Javascript,Json,Angular,我需要什么 我需要在children对象中搜索id列为的parent_id Json对象 { "key":"1", "value":{ "id":"150",
- 我需要在children对象中搜索id列为的parent_id
{
"key":"1",
"value":{
"id":"150",
"code":"p",
"name":"Parent / Node",
"parent_id":null,
"url":"parent-url",
"children":[
{
"id":"151",
"code":"A",
"name":"A",
"parent_id":"150",
"url":"a-test"
},
{
"id":"152",
"code":"B",
"name":"B",
"parent_id":"150",
"url":"b-test"
},
{
"id":"153",
"code":"Comm",
"name":"Comm",
"parent_id":"150",
"url":"c-test",
"children":[
{
"id":"154",
"code":"c_code",
"name":"comm Code",
"parent_id":"153",
"url":"comm-codes"
},
{
"id":"155",
"code":"forms_c",
"name":"Forms Code",
"parent_id":"153",
"url":"form-cod",
"children":[
{
"id":"156",
"code":"test UME",
"name":"Test Menu",
"parent_id":"155",
"url":"test-menu"
}
]
}
]
}
]
}
}
Js代码
console.log(searchNode('153',this.childernNodes));
function searchNode(id, currentNode) {
var i,
currentChild,
result;
//console.log(currentNode);
// if (id == currentNode.parent_id) {
// return currentNode;
// } else {
for (i = 0; i < currentNode.length; i ++) {
currentChild = currentNode[i].node;
result = searchNode(id, currentChild);
return result;
}
}
用例
输出应该是
- 堆栈闪电战
您给定的函数是针对DOM的,因为它使用的是DOM api(.node)。 在这里,它并不完美,但它为您提供了如何做到这一点的工作示例:
var数据={
“密钥”:“1”,
“价值”:{
“id”:“150”,
“代码”:“p”,
“名称”:“父/节点”,
“父项id”:空,
“url”:“父url”,
“儿童”:[
{
“id”:“151”,
“代码”:“A”,
“姓名”:“A”,
“家长id”:“150”,
“url”:“a-test”
},
{
“id”:“152”,
“代码”:“B”,
“名称”:“B”,
“家长id”:“150”,
“url”:“b测试”
},
{
“id”:“153”,
“代码”:“通信”,
“名称”:“通信”,
“家长id”:“150”,
“url”:“c-test”,
“儿童”:[
{
“id”:“154”,
“代码”:“c_代码”,
“名称”:“通信代码”,
“家长id”:“153”,
“url”:“通信代码”
},
{
“id”:“155”,
“代码”:“表格”,
“名称”:“表格代码”,
“家长id”:“153”,
“url”:“表格cod”,
“儿童”:[
{
“id”:“156”,
“代码”:“测试UME”,
“名称”:“测试菜单”,
“家长id”:“155”,
“url”:“测试菜单”
}
]
}
]
}
]
}
};
日志(searchNode('153',数据));
函数searchNode(id,currentNode){
var结果;
for(Object.entries(currentNode))的常量[key,value]{
if(key==“parent_id”&&value==id)返回currentNode;
如果(值!==null&&typeof值===“对象”| | typeof值===“数组”){
结果=搜索节点(id、值);
如果(结果){
返回结果;
}
}
}
}
您给定的函数是针对DOM的,因为它使用的是DOM api(.node)。
在这里,它并不完美,但它为您提供了如何做到这一点的工作示例:
var数据={
“密钥”:“1”,
“价值”:{
“id”:“150”,
“代码”:“p”,
“名称”:“父/节点”,
“父项id”:空,
“url”:“父url”,
“儿童”:[
{
“id”:“151”,
“代码”:“A”,
“姓名”:“A”,
“家长id”:“150”,
“url”:“a-test”
},
{
“id”:“152”,
“代码”:“B”,
“名称”:“B”,
“家长id”:“150”,
“url”:“b测试”
},
{
“id”:“153”,
“代码”:“通信”,
“名称”:“通信”,
“家长id”:“150”,
“url”:“c-test”,
“儿童”:[
{
“id”:“154”,
“代码”:“c_代码”,
“名称”:“通信代码”,
“家长id”:“153”,
“url”:“通信代码”
},
{
“id”:“155”,
“代码”:“表格”,
“名称”:“表格代码”,
“家长id”:“153”,
“url”:“表格cod”,
“儿童”:[
{
“id”:“156”,
“代码”:“测试UME”,
this.childernNodes object json.
* Case 1 when user click on menu option i have id and parent_id of clicked item.
* Suppose 153 selected item then i need recreate json according to clicked menu options
* Parent / Node >Comm>Comm Code