如何将树形结构进行转换操作?

更新于
2026-09-30 18:12:21
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计308个文字,预计阅读时间需要2分钟。

如何将树形结构进行转换操作?

javascript将父子节点表示法转换为树表示法javascriptfunction arrayToTree(nodes, setting) { var idKey=setting.idKey, pIdKey=setting.pIdKey, childKey=setting.childKey; var result=[]; var nodesForId={};

如何将树形结构进行转换操作?

nodes.forEach(function(node) { nodesForId[node[idKey]]=node; });

nodes.forEach(function(node) { var parent=nodesForId[node[pIdKey]]; if (parent) { if (!parent[childKey]) { parent[childKey]=[]; } parent[childKey].push(node); } else { result.push(node); } });

return result;}

父子节点表示法转换成树表示法

function arrayToTree(nodes, setting) { var idKey = setting.idKey, pIdKey = setting.pIdKey, childKey = setting.childKey; var result = [], // 保存结果 nodesForId = {}; // 存放中间结果 // 转换为属性名放置节点 nodes.forEach(function (node) { var id = node[idKey]; nodesForId[id] = node; }); nodes.forEach(function (node) { var id = node[idKey], // 节点id pId = node[pIdKey], // 节点父id pNode = nodesForId[pId]; // 根据节点父id找出父节点 if (pNode && id != pId) { // 父节点存在并且或者父节点不等于本节点 if (!pNode[childKey]) pNode[childKey] = []; pNode[childKey].push(node); } else { // 如果父节点不存在,则该节点是根节点,插入根数组 result.push(node); } }); return result; } 树表示法转换成父子节点表示法

function treeToArray(nodes, setting, pId) { var idKey = setting.idKey, pIdKey = setting.pIdKey, childKey = setting.childKey; var result = [], // 保存结果 fn = arguments.callee; nodes.forEach(function (node) { var childNodes = node[childKey], id = node[idKey]; if (pId) node[pIdKey] = pId; result.push(node); if (childNodes) { var arr = fn(childNodes, setting, id); // 由于每次调用函数都经过一次result=[],因此需要调用concat来合并结果 result = result.concat(arr); } }); return result; }

本文共计308个文字,预计阅读时间需要2分钟。

如何将树形结构进行转换操作?

javascript将父子节点表示法转换为树表示法javascriptfunction arrayToTree(nodes, setting) { var idKey=setting.idKey, pIdKey=setting.pIdKey, childKey=setting.childKey; var result=[]; var nodesForId={};

如何将树形结构进行转换操作?

nodes.forEach(function(node) { nodesForId[node[idKey]]=node; });

nodes.forEach(function(node) { var parent=nodesForId[node[pIdKey]]; if (parent) { if (!parent[childKey]) { parent[childKey]=[]; } parent[childKey].push(node); } else { result.push(node); } });

return result;}

父子节点表示法转换成树表示法

function arrayToTree(nodes, setting) { var idKey = setting.idKey, pIdKey = setting.pIdKey, childKey = setting.childKey; var result = [], // 保存结果 nodesForId = {}; // 存放中间结果 // 转换为属性名放置节点 nodes.forEach(function (node) { var id = node[idKey]; nodesForId[id] = node; }); nodes.forEach(function (node) { var id = node[idKey], // 节点id pId = node[pIdKey], // 节点父id pNode = nodesForId[pId]; // 根据节点父id找出父节点 if (pNode && id != pId) { // 父节点存在并且或者父节点不等于本节点 if (!pNode[childKey]) pNode[childKey] = []; pNode[childKey].push(node); } else { // 如果父节点不存在,则该节点是根节点,插入根数组 result.push(node); } }); return result; } 树表示法转换成父子节点表示法

function treeToArray(nodes, setting, pId) { var idKey = setting.idKey, pIdKey = setting.pIdKey, childKey = setting.childKey; var result = [], // 保存结果 fn = arguments.callee; nodes.forEach(function (node) { var childNodes = node[childKey], id = node[idKey]; if (pId) node[pIdKey] = pId; result.push(node); if (childNodes) { var arr = fn(childNodes, setting, id); // 由于每次调用函数都经过一次result=[],因此需要调用concat来合并结果 result = result.concat(arr); } }); return result; }