zoukankan      html  css  js  c++  java
  • 如何把数组中的多个对象划分成树形结构

    types = ['a1', 'b1'];
    var liList = [
    {
    name: 'a1',
    tags: ['a1', 'a2']
    },
    {
    name: 'a1',
    tags: ['a1', 'a3']
    },
    {
    name: 'b1',
    tags: ['b1', 'b2']
    },
    ];

    var liFunc = function (liList, types) {
    $.each(types, function (i, type) {
    liTree(liList, type.tags.concat());
    });
    };

    var liTree = function (list, tags) {
    if (tags.length > 0) {
    var flag = true;
    $.each(list, function (j, node) {
    if (node.name === tags[0]) {
    node.count++;
    flag = false;

                tags.splice(0, 1);
                liTree(node.children, tags);
            }
        });
    
        if (flag) {
            list.push({
                name: tags[0],
                count: 1,
                children: []
            });
    
            tags.splice(0, 1);
            liTree(list[list.length - 1].children, tags);
        }
    }
    

    };

    // 执行
    liFunc(liList, types);

    // 结果
    liList = [
    {
    name: 'a1',
    count: 2,
    children: [
    {
    name: 'a2',
    count: 1,
    children: []
    },
    {
    name: 'a3',
    count: 1,
    children: []
    }
    ]
    },
    {
    name: 'b1',
    count: 1,
    children: [
    {
    name: 'b2',
    count: 1,
    children: []
    }
    ]
    }
    ];

  • 相关阅读:
    小短文1-判别法浅谈
    高等代数半期考试
    让CNN跑起来,以下是调参的所有秘密
    杂谈
    自适应中值滤波器
    用色调,饱和度,亮度表示颜色
    用类处理彩色图像
    操作像素
    机器学习前言
    直方图均衡化
  • 原文地址:https://www.cnblogs.com/zhanyuefeixian/p/12878004.html
Copyright © 2011-2022 走看看