2 lines
1.2 KiB
JavaScript
2 lines
1.2 KiB
JavaScript
function h(c,p="id",u="parentId",a="children"){let r=new Map,n=[],t=[];for(const o of c){let f=o[u],e=r.get(f)??[];e.push(o),r.set(f,e),n.push(o[p])}for(const[o,f]of r)n.includes(o)||t.push(...f);for(const o of t)s(o);function s(o){let f=o[p],e=r.get(f);if(e&&(o[a]=e),o[a])for(let l of o[a])s(l)}return t}function v(c,p="type",u="0",a="id",r="parentId",n="children"){let t=new Map,s=[],o=[];for(const e of c){let l=e[p];if(l&&l===u)continue;let i=e[r],m=t.get(i)??[];m.push(e),t.set(i,m),s.push(e[a])}for(const[e,l]of t)s.includes(e)||o.push(...l);for(const e of o)f(e);function f(e){let l=e[a],i=t.get(l);if(i&&(e[n]=i),e[n])for(let m of e[n])f(m)}return o}function y(c,p="id",u="children"){let a=[];r(c);function r(n){if(!(n.length<=0))for(const t of n){let s=t[p];s&&a.push(s),Array.isArray(t[u])&&r(t[u])}}return a}function d(c,p="id",u="children"){let a=[];r(c);function r(n){if(!(n.length<=0))for(const t of n){let s=t[u];Array.isArray(s)&&s.length>0&&(a.push(t[p]),r(t[u]))}}return a}function I(c,p="type",u="label",a="value",r="children"){let n=[];for(const t of c){let s=t[p],o=t[u],f=t[a];const e={label:o,value:f,...t},l=n.find(i=>i.value===s);l?l[r].push(e):n.push({label:s,value:s,[r]:[e]})}return n}export{h as a,v as b,y as c,d,I as p};
|