记录下项目中用的递归方法修改与删除。

把用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
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值