对于树的操作是平时用的最多的,任何操作都基于树的遍历。树的遍历有先序,中序,后序。我用的最多的就是先序遍历,现在我们就如下的数据结构说一下先序遍历是怎么操作树的。
我们现在的需求是去除LabelWithNum长度为0的父元素:

//按专题展示下去除没有标签的节点
    function removeNoneTag(data) {
        for (var i = 0, len = data.length; i < len; i++) {
            var secondData = data[i].StudyGroupWithTagNums;
            if (!!secondData && secondData.length > 0) {    //如果有子专题则继续向下遍历,如果没有直接判断该专题下有没有标签
                var temp = removeNoneTag(secondData);
                if (!!temp && temp.length == 0) {
                    if (data[i].LabelWithNum.length == 0) {
                        data.splice(i, 1);
                        len = data.length;
                        i -= 1;
                    }
                }
            } else {
                if (data[i].LabelWithNum.length == 0) {
                    data.splice(i, 1);
                    len = data.length;
                    i -= 1;
                }
            }
        }
        return data;
    }

这样我们拿到的结果就是去除LabelWithNum长度为0的元素集合。
以上是我的做法,大家有可优化的地方欢迎指出。


无敌小豆姐
37 声望2 粉丝