Tree flatten experiment with underscore.js
by Zmetser
HTML
<script>
var obj = JSON.parse('{"tree":[{"open":true,"children":[{"row":true,"sticky":true,"id":"candidate_name","label":"Jelentkező neve"},{"row":true,"id":"project_title","label":"Toborzás megnevezése"}],"label":"Sorok"},{"open":true,"children":[{"children":[{"id":"candidate_lastname","label":"Vezetéknév","children":[{"filterable":false,"require":"project_title","id":"element_name","label":"Aktuális kiválasztási lépés"},{"filterable":false,"require":"project_title","id":"status","label":"Aktuális státusz"},{"filterable":false,"require":"project_title","id":"element_inner_status","label":"Aktuális státusz (kiv. lépésen belül)"}]},{"id":"candidate_firstname","label":"Keresztnév"}],"label":"Név"},{"children":[{"filterable":false,"id":"candidate_email","label":"Elsődleges e-mail cím"},{"filterable":false,"id":"candidate_secondary_email","label":"Másodlagos e-mail cím"},{"filterable":false,"id":"candidate_phone","label":"Elsődleges telefonszám"},{"filterable":false,"id":"candidate_secondary_phone","label":"Másodlagos telefonszám"},{"filterable":false,"id":"candidate_address","label":"Lakcím"}],"label":"Kontakt adatok"},{"filterable":false,"id":"interviewed","label":"Volt interjún a vállalatnál"},{"filterable":false,"id":"tested","label":"Volt tesztíráson a vállalatnál"},{"children":[{"filterable":false,"require":"project_title","id":"element_name","label":"Aktuális kiválasztási lépés"},{"filterable":false,"require":"project_title","id":"status","label":"Aktuális státusz"},{"filterable":false,"require":"project_title","id":"element_inner_status","label":"Aktuális státusz (kiv. lépésen belül)"}],"label":"Státusz"},{"require":"project_title","id":"application_date","label":"Jelentkezés dátuma"},{"children":[{"filterable":false,"require":"project_title","id":"project_interviewed","label":"Volt interjún a toborzásban"},{"filterable":false,"require":"project_title","id":"project_tested","label":"Volt tesztíráson a...
JavaScript
var original = obj.tree;
obj = obj.tree;
console.time('flatten')
var asd = _.flatten(_.map(obj,
function fn( element, index, list) {
if ( element.children ) {
return _.flatten(_.map(element.children, fn))
}
return element;
}))
console.timeEnd('flatten')
console.log(original.length)
console.log(asd)