Javascript 从对象数组中获取属性的值。儿童物品
我试图从这里得到:Javascript 从对象数组中获取属性的值。儿童物品,javascript,arrays,object,iteration,Javascript,Arrays,Object,Iteration,我试图从这里得到: var example=[ { "value": 4, "label": "Bangalore", "path": "fa fa-tachometer", "parentmenu": null, "layout": null, "children": [ { "value": 5, "l
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];
显然,我可以循环它并构建数组,但我可以从父对象获取键,但我需要所有对象的值。家长和孩子。尝试。匹配值
名称键,然后将受尊重的值
推送到数组中
var示例=[{“值”:4,“标签”:“班加罗尔”,“路径”:“fa-fa转速表”,“父菜单”:null,“布局”:null,“子菜单”:[{“值”:5,“标签”:“HSR布局”,“路径”:“fa-fa转速表”,“父菜单”:4,“布局”:null,“子菜单”:[{“值”:6,“标签”:“构建1”,“路径”:“fa-fa转速表”,“父菜单”:5,“布局”:null,“子项”:[{“值”:7,“标签”:“地板1”,“路径”:“fa转速计”,“父菜单”:6,“布局”:空,“子项”:[{“值”:8,“标签”:“Telemon_12765213”,“路径”:“fa转速计”,“父菜单”:7,“布局”:空,“子项”:[{“值”:9,“标签”:“电池”,“路径”:“fa转速计”,“父菜单”:8,“布局”:空,“子项”:,{“值”:10,“标签”:“传感器”,“路径”:“fa-fa转速计”,“父菜单”:8,“布局”:null,“子菜单”:[]}}},{“值”:11,“标签”:“Telemon_12765245”,“路径”:“fa-fa转速计”,“父菜单”:7,“布局”:null,“子菜单”:[{“值”:12,“标签”:“电池”,“路径”:“fa转速计”,“父菜单”:11,“布局”:null,“子菜单”:[]},{“值”:13,“标签”:“传感器”,“路径”:“fa-fa转速表”,“父菜单”:11,“布局”:空,“子菜单”:[]}]}],{“值”:14,“标签”:“地板”,“路径”:“fa-fa转速表”,“父菜单”:6,“布局”:空,“子菜单”:[{“值”:15,“标签”:“Telemon_12765248”,“路径”:“fa-fa转速表”,“父菜单”:14,“布局”:空,“子菜单”:[{“值”:16,“标签”:“电池”,“路径”:“fa-fa转速表”,“父菜单”:15,“布局”:空,“子菜单”:[]},{“值”:17,“标签”:“传感器”,“路径”:“fa-fa转速表”,“父菜单”:15,“布局”:空,“子菜单”:[]}]}]},{“值”:18,“标签”:“建筑2”,“路径”:“fa转速表”,“父菜单”:5,“布局”:空,“子菜单”“:[{”value“:19,“label“:”Floor1“,”path“:”fa-fa转速表“,”parentmenu“:”18,“layout“:”null“,”children“:”[{”value“:20,“labour“,”标签“:”fa-fa转速表“,”parentmenu“:”子菜单“:”子菜单“,”20,“layout“:”null“,”子菜单“,”{“值”:22,“标签”:“传感器”,“路径”:“fa转速计”,“父菜单”:20,“布局”:null,“子项”:[]}]}]}]}]}];
var res=[]
parse(JSON.stringify(示例)、函数(键、值){
如果(键=='value')
res.push(值)
})
console.log(res)
您可以使用递归函数像这样到达每个节点
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);
您可以使用迭代和递归方法,并检查子项是否有长度
var数据=[{value:4,标签:“班加罗尔”,路径:“fa-fa转速表”,父菜单:空,布局:空,子菜单:[{value:5,标签:“HSR布局”,路径:“fa-fa转速表”,父菜单:4,布局:空,子菜单:[{value:6,标签:“Building1”,路径:“fa-fa转速表”,父菜单:5,布局:空,子菜单:[{value:7,标签:1,路径:“fa-fa转速表”,父菜单:6,布局:空,子菜单:[{value:8,标签:“Telemon12765213”,路径:“fa-fa转速表”,父菜单:7,布局:空,子菜单:[{value:9,标签:“电池”,路径:“fa-fa转速表”,父菜单:8,布局:空,子菜单:[},{value:10,标签:“MSensor”,路径:“fa-fa转速表”,父菜单:8,布局:空,子项:[]},{value:11,标签:“Telemon_12765245”,路径:“fa-fa转速表”,父菜单:7,布局:空,子项:[{value:12,标签:“电池”,路径:“fa-fa转速表”,父菜单:11,布局:空,子项:[]},{value:13,标签:“MSensor”,路径:“fa-fa转速表”,父菜单:11,布局:null,子菜单:14,布局:null,子菜单:6,布局:null,子菜单:6,布局:null,子菜单:[{值:15,标签:Telemon_12765248,路径:“fa fa转速表”,父菜单:14,布局:null,子菜单:[{值:16,标签:“电池”,路径:“fa转速表”,父菜单:15,布局:空,子菜单:5,布局:空,子菜单:5,布局:空,子菜单:15,布局:空,子菜单:18,标签:Building2,路径:fa-fa-tachometer,子菜单:5,布局:空,子菜单:[{值:19,标签:Floor1,路径:fa-tachometer”,父菜单:18,布局:空,子菜单:[{值:20,标签:“Telemon_12765254”,路径:“fa转速计”,父菜单:19,布局:空,子菜单:[{值:21,标签:“电池”,路径:“fa转速计”,父菜单:20,布局:空,子菜单:[]},{值:22,标签:“MSensor”,路径:“fa转速计”,父菜单:20,布局:null,子项:[]}]}]}]}]}],,
值=数据.reduce(函数iter(r,a){
返回a.childrence&&a.childrence.length
r.concat(a.value,a.children.reduce(iter,[]))
:r;
}, []);
console.log(值);
.as console wrapper{max height:100%!important;top:0;}
“我可以循环它并构建数组,但是”您必须以某种方式进行循环。在这两种情况下,您都在处理数组。您尝试过什么吗?如果我只想获取父对象(即具有子数组的对象)的值,该怎么办?[4,5,6,7,8,11,14,15,18,19,20]这有点聪明,但它严重依赖于解析的内部机制。然后它需要首先对对象进行字符串化,这是一种开销。如果我想获得唯一父对象(即具有子数组的对象)的值,该怎么办?[4,5,6,7,8,11,14,15,18,19,20]您好@VikramMaiya我根据您的查询更新了我的答案。请检查并给出反馈谢谢Rohith Agrawal。如何将值属性类型从数字转换为字符串并将其存储在同一数组中。从这里开始:[{valu