运用场景:一个树形数据结构,后台返回最后一层的子集的id , 因为是联级选择器,我需要拿到所有的由所有父级id 组成的数组。嵌套的级数是不确定的。 const data = [ { id: 1, name: '大别墅', children: [ ...
本文实例讲述了js 递归json树实现根据子 id 查父 id 的方法。分享给大家供大家参考,具体如下: 最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要循环几层,那么最合适的方法就是用js递归 界面结构: json数据: orgTreeData:{ node Id :19A5B, nodeName:预分析用户:1313.85万人, nodeType:root, expand:true, Iterator iter = list.iterator(); while(iter.hasNext()){ Student student = (Student)iter.next(); if(i.equals(student.getParent id ())){ list2.add(student.get Id ()); getAll(student.get Id (),list); return list2; iveiw Cascader 级联选择 组件 v-model的数据是一个数组类型,工作中如果需要回显的话,就需要传递所有 父级 元素的 ID 所组成的数组,但是后台只存放了目标元素的 ID ,所以只能自己去遍历数据获取了。 综上所述,需求确定了,就是:根据元素 ID 遍历树形结构,查 找到 所有父元素 ID
function findParent(array, value, valueName = 'value', childrenName = 'children') { if (!value || !Array.isArray(array)) return [] const result = [] const seek = (array, value) => { let parentValue = '' const up = (array, val
您可以使用递归算法实现树形结构的父 子级 查询。首先,您需要根据节点的 ID 和parent ID 来构建树形结构,然后根据节点的 ID 查询其所有 子级 ,或者根据子节点的 ID 查询其父节点。以下是Java代码示例: // 树形结构节点类 public class TreeNode { private String id ; private String parent Id ; private List<TreeNode> children; public TreeNode(String id , String parent Id ) { this. id = id ; this.parent Id = parent Id ; children = new ArrayList<>(); // 添加子节点 public vo id addChild(TreeNode node) { children.add(node); // 获取所有子节点 public List<TreeNode> getChildren() { return children; // 获取父节点 public TreeNode getParent() { // 查询父节点 return null; // 构建树形结构 public static TreeNode buildTree(List<TreeNode> nodeList) { Map<String, TreeNode> map = new HashMap<>(); // 将所有节点添加到map中 for (TreeNode node : nodeList) { map.put(node.get Id (), node); // 构建树形结构 for (TreeNode node : nodeList) { if (!node.getParent Id ().equals("0")) { map.get(node.getParent Id ()).addChild(node); // 返回根节点 return map.get("0"); // 根据节点 ID 获取所有子节点 public static List<TreeNode> getChildNodeList(TreeNode node) { List<TreeNode> childNodeList = new ArrayList<>(); if (node != null && !node.getChildren().isEmpty()) { for (TreeNode childNode : node.getChildren()) { childNodeList.addAll(getChildNodeList(childNode)); childNodeList.addAll(node.getChildren()); return childNodeList; // 根据子节点 ID 获取父节点 public static TreeNode getParentNode(TreeNode rootNode, String child Id ) { if (rootNode != null) { if (rootNode.get Id ().equals(child Id )) { return null; for (TreeNode childNode : rootNode.getChildren()) { if (childNode.get Id ().equals(child Id )) { return rootNode; TreeNode parentNode = getParentNode(childNode, child Id ); if (parentNode != null) { return parentNode; return null; // 使用示例 List<TreeNode> nodeList = new ArrayList<>(); nodeList.add(new TreeNode("0", "0")); nodeList.add(new TreeNode("1", "0")); nodeList.add(new TreeNode("2", "1")); nodeList.add(new TreeNode("3", "2")); nodeList.add(new TreeNode("4", "2")); TreeNode rootNode = buildTree(nodeList); List<TreeNode> childNodeList = getChildNodeList(rootNode); // 获取所有子节点 TreeNode parentNode = getParentNode(rootNode, "4"); // 获取父节点