xlearns / myblog

1 stars 0 forks source link

tree转换 #256

Open xlearns opened 1 year ago

xlearns commented 1 year ago

在线demo

const keys = $ref("id,label"); let msg = $ref([ { id: 1, label: "Level one 1", children: [ { id: 4, label: "Level two 1-1", isPenultimate: true, children: [ { id: 9, label: "Level three 1-1-1" }, { id: 10, label: "Level three 1-1-2" } ] } ] }, { id: 2, label: "Level one 2", isPenultimate: true, children: [ { id: 5, label: "Level two 2-1" }, { id: 6, label: "Level two 2-2" } ] }, { id: 3, label: "Level one 3", isPenultimate: true, children: [ { id: 7, label: "Level two 3-1" }, { id: 8, label: "Level two 3-2" } ] } ]);

function filterTree(tree, callback, index = 0) { const res = []; tree.forEach((_t, index) => { res[index] = {}; const newNode = callback(_t) || { children: [] }; if (newNode?.children?.length === 0) { res[index] = { ...newNode }; } else { res[index] = { ...newNode }; res[index].children = filterTree(newNode.children, callback, index); } index++; }); return res; }

const _ = computed(() => { return JSON.stringify(msg, null, 2); });

const _ = computed(() => { return JSON.stringify( filterTree(msg, v => { const { children } = v; const res = {}; keys.split(",").forEach( => { if (v[]) { res[] = v[_]; } }); return { ...res, children: children ? children : [] }; }), null, 2 ); });

function ___(e) { msg = JSON.parse(e.target.value); }