js生成树形结构数组

简单实用的树形结构拼接方法

<!DOCTYPE html>
<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<style type="text/css">
		body,
		html,
		#allmap {
			width: 100%;
			height: 100%;
			overflow: hidden;
			margin: 0;
			font-family: "微软雅黑";
		}
	</style>
	<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=egAs3pKxpHT6hAV8zu3KEqUsRQGNcy3m"></script>
	<title>js拼接树形结构数组</title>
</head>

<body>
	<script type="text/javascript">
		var dataArray = [{
				id: 1,
				parentId: 0,
				name: "动物",
				rank: 1
			},
			{
				id: 2,
				parentId: 0,
				name: "植物",
				rank: 1
			},
			{
				id: 3,
				parentId: 0,
				name: "微生物",
				rank: 1
			},
			{
				id: 4,
				parentId: 1,
				name: "哺乳动物",
				rank: 1
			},
			{
				id: 5,
				parentId: 1,
				name: "卵生动物",
				rank: 1
			},
			{
				id: 6,
				parentId: 2,
				name: "种子植物",
				rank: 1
			},
			{
				id: 7,
				parentId: 2,
				name: "蕨类植物",
				rank: 1
			},
			{
				id: 8,
				parentId: 4,
				name: "大象",
				rank: 1
			},
			{
				id: 9,
				parentId: 4,
				name: "海豚",
				rank: 1
			},
			{
				id: 10,
				parentId: 4,
				name: "猩猩",
				rank: 1
			},
			{
				id: 11,
				parentId: 5,
				name: "蟒蛇",
				rank: 1
			},
			{
				id: 12,
				parentId: 5,
				name: "麻雀",
				rank: 1
			},
		];
		var copyVal = deepCopy(dataArray);
		var treeArray = assembleTree({
			data: copyVal,
			parent: "parentId",
			id: "id",
			child: "children"
		});
		// 深度拷贝
		function deepCopy(data) {
			return JSON.parse(JSON.stringify(data));
		};
		function assembleTree(params) {
			var options = {
				data: params.data,
				parent: params.parent,
				id: params.id,
				child: params.child
			};
			let tree = options.data.filter(function (parent) {
				let item = options.data.filter(function (child) {
					return parent[options.id] == child[options.parent];
				});
				if (item.length > 0) {
					parent[options.child] = item; 
				}
				return parent[options.parent] == 0;
			});
			return tree;
		}
		console.log(treeArray);
	</script>
</body>
</html>

执行结果如下:
在这里插入图片描述

发布了19 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/an_xinyu/article/details/85613016