1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以創(chuàng)建遞歸函數(shù),每次您的對象結(jié)構(gòu)更改時(shí)都會調(diào)用該函數(shù)以重新計(jì)算樹中每個(gè)元素的位置。
function recalc(data, prev = '') {
data.forEach((e, i) => {
let dot = prev ? '.' : '';
let number = prev + dot + (i + 1);
if (e.children) {
recalc(e.children, number)
}
if (e.title) {
e.title.number = number
}
})
}
const data1 = [{"title":{"number":1},"children":[{"title":{"number":1.1}},{"title":{"number":1.2}},{"title":{"number":1.3}},{"title":{"number":1.4}},{"title":{"number":1.5}}]},{"title":{"number":2},"children":[{"title":{"number":2.1}},{"title":{"number":2.2},"children":[{"title":{"number":"2.2.1"}},{"title":{"number":"2.2.2"}},{"title":{"number":"2.2.3"}},{"title":{"number":"2.2.4"}}]},{"title":{"number":2.3}},{"title":{"number":2.4}}]},{"title":{"number":3},"children":[]}]
recalc(data1);
console.log(data1)
const data2 = [{"title":{"number":1},"children":[{"title":{"number":1.1}},{"title":{"number":1.2}},{"title":{"number":1.5}}]},{"title":{"number":2},"children":[{"title":{"number":2.1}},{"title":{"number":2.2},"children":[{"title":{"number":"2.2.3"}},{"title":{"number":"2.2.4"}}]},{"title":{"number":2.3}},{"title":{"number":2.4}}]},{"title":{"number":3},"children":[{title: {}, children: [{title: {}}, {title: {}}]}]}]
recalc(data2);
console.log(data2)
添加回答
舉報(bào)