把用vue项目中的级联选择器和ext.js的树两个递归方法记录下。
// 递归方法,将最后一个元素,修改为undefined
var getTreeData = function(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// 将children修改为undefined
data[i].children = undefined
} else {
// 不为空,继续递归调本方法
this.getTreeData(data[i].children)
}
}
return data
}
// 递归方法删除,由于是数组,所以选中倒叙删除。
var getTreeData = function (data, type) {
for (var i = data.children.length - 1; 0 <= i; i--) {
// 根据不同类型删除
switch (type) {
case 1:
// 删除除1外的所有类型
if (data.children[i].nodetype != 1) {
// 删除指定元素
data.children.splice(i, 1);
} else if (data.children[i].children.length > 0) {
getTreeData(data.children[i], 1);
}
break;
case 2:
// 删除除1,2级外的所有类型
if (data.children[i].nodetype != 2 && data.children[i].nodetype != 1) {
data.children.splice(i, 1);
} else if (data.children[i].children.length > 0) {
getTreeData(data.children[i], 2);
}
break;
// 默认删除最后一个
default:
if (data.children[i].children == null || data.children[i].children == undefined || data.children[i].children.length < 1) {
// children若为空数组,则将children设为undefined
data.children[i] = null;
data.children.splice(i, 1);
} else {
// 不为空继续,递归调本方法
getTreeData(data.children[i]);
}
break
}
}
return data
}