我想从这里开始:
var example=[
{
"value": 4,
"label": "Bangalore",
"path": "fa fa-tachometer",
"parentmenu": null,
"layout": null,
"children": [
{
"value": 5,
"label": "HSR Layout",
"path": "fa fa-tachometer",
"parentmenu": 4,
"layout": null,
"children": [
{
"value": 6,
"label": "Building1",
"path": "fa fa-tachometer",
"parentmenu": 5,
"layout": null,
"children": [
{
"value": 7,
"label": "Floor1",
"path": "fa fa-tachometer",
"parentmenu": 6,
"layout": null,
"children": [
{
"value": 8,
"label": "Telemon_12765213",
"path": "fa fa-tachometer",
"parentmenu": 7,
"layout": null,
"children": [
{
"value": 9,
"label": "Battery",
"path": "fa fa-tachometer",
"parentmenu": 8,
"layout": null,
"children": []
},
{
"value": 10,
"label": "MSensor",
"path": "fa fa-tachometer",
"parentmenu": 8,
"layout": null,
"children": []
}
]
},
{
"value": 11,
"label": "Telemon_12765245",
"path": "fa fa-tachometer",
"parentmenu": 7,
"layout": null,
"children": [
{
"value": 12,
"label": "Battery",
"path": "fa fa-tachometer",
"parentmenu": 11,
"layout": null,
"children": []
},
{
"value": 13,
"label": "MSensor",
"path": "fa fa-tachometer",
"parentmenu": 11,
"layout": null,
"children": []
}
]
}
]
},
{
"value": 14,
"label": "Floor2",
"path": "fa fa-tachometer",
"parentmenu": 6,
"layout": null,
"children": [
{
"value": 15,
"label": "Telemon_12765248",
"path": "fa fa-tachometer",
"parentmenu": 14,
"layout": null,
"children": [
{
"value": 16,
"label": "Battery",
"path": "fa fa-tachometer",
"parentmenu": 15,
"layout": null,
"children": []
},
{
"value": 17,
"label": "MSensor",
"path": "fa fa-tachometer",
"parentmenu": 15,
"layout": null,
"children": []
}
]
}
]
}
]
},
{
"value": 18,
"label": "Building2",
"path": "fa fa-tachometer",
"parentmenu": 5,
"layout": null,
"children": [
{
"value": 19,
"label": "Floor1",
"path": "fa fa-tachometer",
"parentmenu": 18,
"layout": null,
"children": [
{
"value": 20,
"label": "Telemon_12765254",
"path": "fa fa-tachometer",
"parentmenu": 19,
"layout": null,
"children": [
{
"value": 21,
"label": "Battery",
"path": "fa fa-tachometer",
"parentmenu": 20,
"layout": null,
"children": []
},
{
"value": 22,
"label": "MSensor",
"path": "fa fa-tachometer",
"parentmenu": 20,
"layout": null,
"children": []
}
]
}
]
}
]
}
]
}
]
}
];
到这里:
var a=[4, 5, 6, 7, 8, 11, 14, 15, 18, 19, 20];
显然我可以循环它并构建数组,但我可以从父节点获取键,但我想要所有对象的值。父母以及孩子。
答案 0 :(得分:3)
尝试使用JSON.parse()
。匹配value
名称密钥,然后将受尊重的values
推送到数组
var example = [{ "value": 4, "label": "Bangalore", "path": "fa fa-tachometer", "parentmenu": null, "layout": null, "children": [{ "value": 5, "label": "HSR Layout", "path": "fa fa-tachometer", "parentmenu": 4, "layout": null, "children": [{ "value": 6, "label": "Building1", "path": "fa fa-tachometer", "parentmenu": 5, "layout": null, "children": [{ "value": 7, "label": "Floor1", "path": "fa fa-tachometer", "parentmenu": 6, "layout": null, "children": [{ "value": 8, "label": "Telemon_12765213", "path": "fa fa-tachometer", "parentmenu": 7, "layout": null, "children": [{ "value": 9, "label": "Battery", "path": "fa fa-tachometer", "parentmenu": 8, "layout": null, "children": [] }, { "value": 10, "label": "MSensor", "path": "fa fa-tachometer", "parentmenu": 8, "layout": null, "children": [] }] }, { "value": 11, "label": "Telemon_12765245", "path": "fa fa-tachometer", "parentmenu": 7, "layout": null, "children": [{ "value": 12, "label": "Battery", "path": "fa fa-tachometer", "parentmenu": 11, "layout": null, "children": [] }, { "value": 13, "label": "MSensor", "path": "fa fa-tachometer", "parentmenu": 11, "layout": null, "children": [] }] }] }, { "value": 14, "label": "Floor2", "path": "fa fa-tachometer", "parentmenu": 6, "layout": null, "children": [{ "value": 15, "label": "Telemon_12765248", "path": "fa fa-tachometer", "parentmenu": 14, "layout": null, "children": [{ "value": 16, "label": "Battery", "path": "fa fa-tachometer", "parentmenu": 15, "layout": null, "children": [] }, { "value": 17, "label": "MSensor", "path": "fa fa-tachometer", "parentmenu": 15, "layout": null, "children": [] }] }] }] }, { "value": 18, "label": "Building2", "path": "fa fa-tachometer", "parentmenu": 5, "layout": null, "children": [{ "value": 19, "label": "Floor1", "path": "fa fa-tachometer", "parentmenu": 18, "layout": null, "children": [{ "value": 20, "label": "Telemon_12765254", "path": "fa fa-tachometer", "parentmenu": 19, "layout": null, "children": [{ "value": 21, "label": "Battery", "path": "fa fa-tachometer", "parentmenu": 20, "layout": null, "children": [] }, { "value": 22, "label": "MSensor", "path": "fa fa-tachometer", "parentmenu": 20, "layout": null, "children": [] }] }] }] }] }] }];
var res =[]
JSON.parse(JSON.stringify(example), function(keys,values){
if(keys == 'value')
res.push(values)
})
console.log(res)
答案 1 :(得分:0)
你可以使用递归函数来达到每个节点。
var arr = [];
function getValues(example){
example.forEach(function(obj){
//check if object has children i.e. it is a parent
if(obj.children.length){
arr.push(obj.value);
getValues(obj.children);
}
});
}
getValues(example);
console.log(arr);
答案 2 :(得分:0)
您可以使用迭代递归方法并检查子项是否有长度。
var data = [{ value: 4, label: "Bangalore", path: "fa fa-tachometer", parentmenu: null, layout: null, children: [{ value: 5, label: "HSR Layout", path: "fa fa-tachometer", parentmenu: 4, layout: null, children: [{ value: 6, label: "Building1", path: "fa fa-tachometer", parentmenu: 5, layout: null, children: [{ value: 7, label: "Floor1", path: "fa fa-tachometer", parentmenu: 6, layout: null, children: [{ value: 8, label: "Telemon_12765213", path: "fa fa-tachometer", parentmenu: 7, layout: null, children: [{ value: 9, label: "Battery", path: "fa fa-tachometer", parentmenu: 8, layout: null, children: [] }, { value: 10, label: "MSensor", path: "fa fa-tachometer", parentmenu: 8, layout: null, children: [] }] }, { value: 11, label: "Telemon_12765245", path: "fa fa-tachometer", parentmenu: 7, layout: null, children: [{ value: 12, label: "Battery", path: "fa fa-tachometer", parentmenu: 11, layout: null, children: [] }, { value: 13, label: "MSensor", path: "fa fa-tachometer", parentmenu: 11, layout: null, children: [] }] }] }, { value: 14, label: "Floor2", path: "fa fa-tachometer", parentmenu: 6, layout: null, children: [{ value: 15, label: "Telemon_12765248", path: "fa fa-tachometer", parentmenu: 14, layout: null, children: [{ value: 16, label: "Battery", path: "fa fa-tachometer", parentmenu: 15, layout: null, children: [] }, { value: 17, label: "MSensor", path: "fa fa-tachometer", parentmenu: 15, layout: null, children: [] }] }] }] }, { value: 18, label: "Building2", path: "fa fa-tachometer", parentmenu: 5, layout: null, children: [{ value: 19, label: "Floor1", path: "fa fa-tachometer", parentmenu: 18, layout: null, children: [{ value: 20, label: "Telemon_12765254", path: "fa fa-tachometer", parentmenu: 19, layout: null, children: [{ value: 21, label: "Battery", path: "fa fa-tachometer", parentmenu: 20, layout: null, children: [] }, { value: 22, label: "MSensor", path: "fa fa-tachometer", parentmenu: 20, layout: null, children: [] }] }] }] }] }] }],
values = data.reduce(function iter(r, a) {
return a.children && a.children.length
? r.concat(a.value, a.children.reduce(iter, []))
: r;
}, []);
console.log(values);
.as-console-wrapper { max-height: 100% !important; top: 0; }