使用下划线从嵌套对象(父-子)中获取路径字段值
fetch path field value from nested objects(Parent- child) using underscore.js
var levels= [
{
path: 'RS',
hasChild :true
},
{
path: 'MO',
hasChild: true
},
{
path: 'EL',
hasChild: true
},
{
path: 'CL',
hasChild: false
},
{
path: 'EL1',
hasChild: true
},
{
path: 'CL1',
hasChild: false
},
{
path: 'RS2',
hasChild :true
},
{
path: 'MO2',
hasChild: true
},
{
path: 'EL2',
hasChild: true
},
{
path: 'CL2',
hasChild: false
},
{
path: 'CL3',
hasChild: false
},
];
是否可以使用下划线从对象'level'创建完整的路径?例如-
RS'MO'EL'CL
RS '莫' EL1 ' CL1
平日CL2 ' MO2 ' EL2 '
平日' MO2 ' CL3 ' CL3
在上述任何一个级别中,子节点都可以出现多个。请告知下划线是否可以对嵌套的对象数组进行深度监视。
请为上面嵌套数组对象的错误格式向我道歉。
function parse (levels) {
var buffer = [], target = [];
levels.forEach(function (level) {
buffer.push(level.path);
if (!level.hasChild) {
target.push(buffer.join('/'));
buffer.splice(0, buffer.length + 1);
}
});
return levels;
}
给了: (RS/MO/EL/CL,‘EL1/CL1’,‘CL2卢比/MO2/EL2/’,‘CL3]
给定您当前的结构,获得所需输出的逻辑是不清楚的。程序如何知道RS2
启动了一个新节点,而EL1
没有?
这解决了问题,但老实说,它很粗糙。一个更好的方法是以更好的方式组织数据。
function parse (levels) {
var buffer = [], target = [];
levels.forEach(function (level) {
if (level.hasChild) {
buffer.push(level.path);
}
else {
var tmp = buffer.slice();
tmp.push(level.path);
target.push(tmp.join('/'));
buffer.splice(buffer.length - 1, 1);
}
if (/^RS/.test(level.path)) {
buffer.splice(1, buffer.length);
}
});
return target;
}
结果: (RS/MO/EL/CL,‘RS/MO/EL1/CL1’,‘CL2 RS/MO2/EL2/’,‘RS/MO2/CL3]
use _。每个
<我>我>
var path =""
_.each(levels,function(object){
path = path +object.path+"/"
})
console.log(path)
编辑:输出:"RS/MO/EL/CL/EL1/CL1 CL2卢比/MO2/EL2///CL3/"
我认为你的Json应该是这样的:
<我>我>
var levels = [
{
"path": "RS",
"hasChild": true,
"childerens": {
"path": "MO",
"hasChild": true,
"childe1": [
{
"path": "EL",
"hasChild": true
},
{
"path": "CL",
"hasChild": false
}
],
"childe2": [
{
"path": "EL1",
"hasChild": true
},
{
"path": "CL1",
"hasChild": false
}
]
},
"isParent": true
},
{
"path": "RS2",
"hasChild": true,
"childerens": {
"path": "MO2",
"hasChild": true,
"chiled1": [
{
"path": "EL2",
"hasChild": true
},
{
"path": "CL2",
"hasChild": false
}
],
"chiled2": [
{
"path": "CL3",
"hasChild": true
},
{
"path": "CL3",
"hasChild": false
}
]
},
"isParent": true
}
]
验证json是正确还是错误,请转到JSONLINT
为验证删除变量名
相关文章:
- 如何在Ember中获取路径类型
- 从“另存为浏览器”对话框中获取路径
- SVG:获取路径的精确边界框
- jQuery 从数据属性获取路径
- SVG文件 :如何使用Inkscape将PNG文件转换为SVG文件后获取路径标记数据
- 节点.js:从请求中获取路径
- Instagram照片获取路径并保存到数据库中
- 没有基本href,我如何获取路径
- KineticJS-获取路径形状的宽度/高度
- 如何从phonegap的html5输入字段文件对象获取路径
- Raphael-获取路径的ID和名称
- Sammy.js-从路由中获取路径
- 正在获取路径的属性
- 如何从javascript对象的键和值获取路径
- 使用javascript从URL获取路径和查询字符串
- JSON不使用ajax获取路径
- 正在获取'路径未找到'使用CreateTextFile时
- SVG:如何制作路径/获取路径的点
- 在SVG中获取路径的维度
- 使用Google地图api获取路径点数组