我有以下格式的平面文件数据:
d1 | d2 | d3 | d4
-------------------------------------------
Heading | | |
| Subheading | |
| | Entry1 |
| | Entry2 |
| Another sub | |
| | Entry3 |
| | Entry4 |
| | | Subentry
我可以很好地阅读平面 dsv,并且如果可能的话,希望对其进行分层。我想知道是否可以在 .parentId() 内部访问以前的行并检查它是否是父级。
或者我编写自己的树函数?
最佳答案
所以我通过编写自己的树来使其工作,如下所示:
function tree(nodes) {
var curr, parent, root;
var lev = 1;
nodes.forEach(function(d) {
if (!root) {
// handle root (first node)
curr = {
name: d.d1,
size: 1, //stub
children: []
};
root = curr;
parent = curr;
} else {
if (d['d' + (lev+1)]) {
// handle children
lev = lev+1;
parent = curr;
} else if (d['d' + (lev-1)]) {
// handle moving up the hierarchy
lev = lev-1;
parent = parent.parent;
} else if (!d['d' + lev]) {
// if it's neither child, nor moving up, nor a sibling, handle exception
throw "unhandled tree level";
}
curr = {
name: d['d' + lev],
size: 1, //stub
children: []
};
curr.parent = parent;
parent.children.push(curr);
}
});
return root;
}
关于javascript - 在不直接指定父级的情况下对平面数据进行分层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478923/