登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Programming
  3. javascript
  4. 正文

JavaScript重建线性描述的树层级2-日常笔记

2017-12-20

JavaScript:

    function convert(orgin)
    {
        var result = arguments[1] ? arguments[1] : [];
        var level = arguments[2] ? arguments[2] : 0;
        var parentid = arguments[3] ? arguments[3] : 0;
		var isLeaf =  function (id){
		    for(var x in orgin){
			    if(orgin[x]["parentid"]==id){
				return false;
				}
			}
			return true;
		};
        for(var x in orgin)
        {
            if(orgin[x]["parentid"]==parentid&&orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]!=1)
            {
				orgin[x]["isleaf"]=isLeaf(orgin[x]["id"])==true?1:0;
                orgin[x]["level"]=level;
				result.push(JSON.parse(JSON.stringify(orgin[x]))); //对象深拷贝
                orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]=1;//标记该节点不用再遍历
                if(!isLeaf(orgin[x]["id"]))
                {
                   convert(orgin,result,level+1,orgin[x]["id"]);
                }
            }
        }
        return result;
    }

测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">
    var orgin = [
        {
            "id": 1,
            "name": "生产管理1",
            "parentid": 0
        },
        {
            "id": 2,
            "name": "生产管理2",
            "parentid": 1
        },
        {
            "id": 3,
            "name": "生产管理3",
            "parentid": 2
        },
        {
            "id": 4,
            "name": "生产管理4",
            "parentid": 0
        },        
		{
            "id": 5,
            "name": "生产管理5",
            "parentid": 0
        },
        {
            "id": 6,
            "name": "生产管理6",
            "parentid": 5
        }
    ];
    function convert(orgin)
    {
        var result = arguments[1] ? arguments[1] : [];
        var level = arguments[2] ? arguments[2] : 0;
        var parentid = arguments[3] ? arguments[3] : 0;
		var isLeaf =  function (id){
		    for(var x in orgin){
			    if(orgin[x]["parentid"]==id){
				return false;
				}
			}
			return true;
		};
        for(var x in orgin)
        {
            if(orgin[x]["parentid"]==parentid&&orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]!=1)
            {
				orgin[x]["isleaf"]=isLeaf(orgin[x]["id"])==true?1:0;
                orgin[x]["level"]=level;
				result.push(JSON.parse(JSON.stringify(orgin[x]))); //对象深拷贝
                orgin[x]["skip_012ea834e2aa011ef16f7d846889c026"]=1;//标记该节点不用再遍历
                if(!isLeaf(orgin[x]["id"]))
                {
                   convert(orgin,result,level+1,orgin[x]["id"]);
                }
            }
        }
        return result;
    }
    console.log(convert(orgin))
</script>
</html>

 

标签: 暂无
最后更新:2017-12-20

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号