<p/><div^{cl1}$&13;
<div^{cl2}$&13;
<pre class="snippet-code-js lang-js prettyprint-override"><code>var log = console.log;
var data = `
1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens
2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis
3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana
4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris`;
//make array of rows with array of values
data = data.split("\n").map(v=>v.split(","));
//init tree
var tree = {};
data.forEach(row=>{
//set current = root of tree for every row
var cur = tree;
var id = false;
row.forEach((value,i)=>{
if (i == 0) {
//set id and skip value
id = value;
return;
}
//If branch not exists create.
//If last value - write id
if (!cur[value]) cur[value] = (i == row.length - 1) ? id : {};
//Move link down on hierarhy
cur = cur[value];
});
});
log("Tree:");
log(JSON.stringify(tree, null, " "));
//Now you have hierarhy in tree and can do anything with it.
var toStruct = function(obj) {
let ret = [];
for (let key in obj) {
let child = obj[key];
let rec = {};
rec.name = key;
if (typeof child == "object") rec.children = toStruct(child);
ret.push(rec);
}
return ret;
}
var struct = toStruct(tree);
console.log("Struct:");
console.log(struct);</code></pre>
;
</div>和13;
</div>和13;