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
},
];
是否可以使用underscore.js从对象'level'创建完整路径?
对于例如 -
RS \ MO \ EL \ CL
RS \ MO \ EL1 \ CL1
RS2 \ MO2 \ EL2 \ CL2
RS2 \ MO2 \ CL3 \ CL3
在任何上述级别中,孩子可以出现多个。请告知underscore.js是否可以深入观察嵌套的对象数组。
请为我上面的嵌套数组对象的错误格式道歉。
答案 0 :(得分:1)
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',' RS2 / MO2 / EL2 / CL2', ' CL3' ] 强>
鉴于您当前的结构,获得所需输出的逻辑尚不清楚。
该程序应该如何知道RS2
启动新节点,但EL1
没有?
这解决了问题,老实说,它的hacky。更好的方法是以更好的方式构建数据。
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',' RS / MO2 / EL2 / CL2& #39;,' RS / MO2 / CL3']
答案 1 :(得分:0)
使用_.each
的
的var path =""
_.each(levels,function(object){
path = path +object.path+"/"
})
console.log(path)
的
输出:<强> “RS / MO / EL / CL / EL1 / CL1 / RS2 / MO2 / EL2 / CL2 / 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
删除验证的变量名称