代碼
let sourceArr =
[
{
id: "1",
data: { menuName: "one" },
childTreeNode: [
{ data: {menuName: "one-1"}, childTreeNode: [] },
{ data: {menuName: "one-2"}, childTreeNode: [] },
{ data: {menuName: "one-3"}, childTreeNode: [] }
]
},
{
id: "2",
data: { menuName: "two" },
childTreeNode: [
{
data: {menuName: "two-1"},
childTreeNode: [
{ data: {menuName: "two-1-1"}, childTreeNode: [] }
]
}
]
},
{
id: "3",
data: { menuName: "three" },
childTreeNode: []
}
]
let resultArr = [];
function DispatchValue (value, index, id, parentIndex) {
let _value = value
// 最頂級有子節(jié)點(diǎn)
if(value.childTreeNode.length != 0 && value.id) {
// 首次調(diào)用無id 設(shè)置OriginId值樊拓,小環(huán)境內(nèi)不再變化
if (!id) {
DispatchValue.prototype.level.originID = value.id;
}
resultArr.push({id: value.id, menuName: value.data.menuName, deep: DispatchValue.prototype.level.deep})
DispatchValue.prototype.level.deep ++
InfientLoop(value.childTreeNode, value.id, index)
DispatchValue.prototype.level.deep --
} else
// 次級子節(jié)點(diǎn)
if (value.childTreeNode.length != 0 && !value.id) {
resultArr.push({originID: DispatchValue.prototype.level.originID, parentIndex: parentIndex, index: index, menuName: value.data.menuName, deep: DispatchValue.prototype.level.deep})
DispatchValue.prototype.level.deep ++
InfientLoop(value.childTreeNode, value.id, index)
DispatchValue.prototype.level.deep --
} else
// 末級節(jié)點(diǎn)
if(value.childTreeNode.length == 0 && !value.id){
resultArr.push({originID: DispatchValue.prototype.level.originID, parentIndex: parentIndex, index: index, menuName: value.data.menuName, deep: DispatchValue.prototype.level.deep})
}
// 最頂級節(jié)點(diǎn)酷勺,沒有子節(jié)點(diǎn)
else {
resultArr.push({id: value.id, menuName: value.data.menuName, deep: DispatchValue.prototype.level.deep})
}
}
DispatchValue.prototype.level = {
deep: 0,
originID: ''
}
DispatchValue.prototype.constructor = DispatchValue
function InfientLoop (Arr, id, parentIndex) {
Arr.forEach(function (v, i) {
DispatchValue(v, i, id, parentIndex)
});
}
InfientLoop(sourceArr)
console.log(resultArr)
網(wǎng)站導(dǎo)航
網(wǎng)站導(dǎo)航
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者