<script>
var pub = {
// tree 为当前树的数据源 key为父节点key值
treeTransArray: function(tree, key) {
return tree.reduce(function(con, item) {
var callee = arguments.callee;
con.push(item);
if (item[key] && item[key].length >0)
item[key].reduce(callee, con);
return con;
}, []).map(function(item){
item[key] = [];
return item;
},
//数组转树
// list 数组数据源 ,key 对应父节点id字符串
arrayTransTree: function(list ,key) {
var tree = list.filter(function(parent) {
var branchArr = list.filter(function(child) {
return parent.id == child[key];
});
parent.nodes = [];
if (branchArr.length > 0) {
parent.nodes = branchArr;
}
return parent[key] == "";
});
return tree;
},
}
var tree = [{
id:"parent",
parentId:"",
name:"一级节点",
childs:[{
id:"child1",
parentId:"parent",
name:"一级节点",
childs:[]
},{
id:"child2",
parentId:"parent",
name:"一级节点",
childs:[]
}]
}]
var arr = pub.treeTransArray(tree,'childs'); //输出转换后数组
console.log(arr);
var _tree = pub.arrayTransTree(arr,'parentId');//输出转换后树
console.log(_tree);
</script>
js树结构数据和数组相互转换方法
最新推荐文章于 2024-06-25 18:31:27 发布