用递归的方式实现数组转树

用递归的方式实现数组转树

<script>

  /**
  * 把平铺的数组结构转成树形结构
  */
  const arr = [
  {id:"01", name: "张大大", pid:"", job: "项目经理"},
  {id:"02", name: "小亮", pid:"01", job: "产品leader"},
  {id:"03", name: "小美", pid:"01", job: "UIleader"},
  {id:"04", name: "老马", pid:"01", job: "技术leader"},
  {id:"05", name: "老王", pid:"01", job: "测试leader"},
  {id:"06", name: "老李", pid:"01", job: "运维leader"},
  {id:"07", name: "小丽", pid:"02", job: "产品经理"},
  {id:"08", name: "大光", pid:"02", job: "产品经理"},
  {id:"09", name: "小高", pid:"03", job: "UI设计师"},
  {id:"10", name: "小刘", pid:"04", job: "前端工程师"},
  {id:"11", name: "小华", pid:"04", job: "后端工程师"},
  {id:"12", name: "小李", pid:"04", job: "后端工程师"},
  {id:"13", name: "小赵", pid:"05", job: "测试工程师"},
  {id:"14", name: "小强", pid:"05", job: "测试工程师"},
  {id:"15", name: "小涛", pid:"06", job: "运维工程师"}
]

// * 数组转树  递归求解
//  */
function toTree(list,pid = ''){
  let treeList = []
  treeList = list.filter(item => {
   return item.pid === pid
  })
	list.forEach(item=>{
		treeList.children=toTree(list,item.id)
	})
	return treeList
}

let result = toTree(arr)
console.log(result);

</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码实现: function arrayToTree(arr, id = 'id', pid = 'parentId', children = 'children') { let map = {}; let res = []; for (let i = ; i < arr.length; i++) { map[arr[i][id]] = arr[i]; arr[i][children] = []; } for (let i = ; i < arr.length; i++) { let item = arr[i]; let parent = map[item[pid]]; if (parent) { parent[children].push(item); } else { res.push(item); } } return res; } ### 回答2: 数组归方法可以通过 JavaScript 来实现。具体步骤如下: 1. 创建一个空对象作为的根节点。 2. 遍历数组中的每个元素,将每个元素插入到中适当的位置。 3. 在插入元素时,首先需要根据元素的父节点找到对应的节点。 4. 如果元素的父节点是根节点,则直接将元素插入到根节点的子节点数组中。 5. 如果元素的父节点不是根节点,则需要在当前归查找该父节点,并将元素插入到父节点的子节点数组中。 6. 返回的根节点。 下面是使用 JavaScript 实现数组归方法的示例代码: ```javascript function arrayToTree(arr) { const tree = {}; // 创建的根节点 arr.forEach(item => { const { id, parentId } = item; if (parentId === null || parentId === undefined) { // 如果元素的父节点是根节点,则直接插入到子节点数组中 if (!tree.children) { tree.children = []; } tree.children.push(item); } else { // 如果元素的父节点不是根节点,则归查找父节点并插入到子节点数组中 findParentAndInsert(tree, item); } }); return tree; } function findParentAndInsert(node, item) { if (node.children) { const found = node.children.find(child => child.id === item.parentId); if (found) { if (!found.children) { found.children = []; } found.children.push(item); } else { node.children.forEach(child => findParentAndInsert(child, item)); } } } ``` 上述代码定义了一个 `arrayToTree` 的函数,用于将数组换成。传入的数组 `arr` 包含了要换的元素,每个元素具有 `id` 和 `parentId` 属性,分别表示元素的唯一标识和父节点的标识。函数返回一个具有结构的对象。 ### 回答3: JS写数组归方法可以按照以下步骤实现: 1. 创建一个空的对象,用来存储换后的形结构。 2. 遍历数组,将每个元素添加到中的适当位置。 3. 对于每个元素,将其根据指定的父子关系逐级添加到中。 4. 如果一个元素的父级id为空或不存在,那么它就是的根节点,将其添加到对象中。 5. 如果一个元素的父级id存在于中,则将其添加为该父级的子节点。 6. 重复上述步骤,直到遍历完所有元素。 7. 返回换后的对象。 以下是一个示例的JS代码,用于将数组换为归方法: ```javascript function arrayToTree(array) { const tree = {}; function addToTree(parentId, item) { if (!tree[parentId]) { tree[parentId] = {}; } tree[parentId][item.id] = item; if (item.children && item.children.length > 0) { item.children.forEach(child => { addToTree(item.id, child); }); } } array.forEach(item => { if (!item.parentId || !tree[item.parentId]) { tree[item.id] = item; } else { addToTree(item.parentId, item); } }); return tree; } // 示例用法 const array = [ { id: 1, parentId: null }, { id: 2, parentId: 1 }, { id: 3, parentId: 1 }, { id: 4, parentId: 2 }, { id: 5, parentId: 3 } ]; const tree = arrayToTree(array); console.log(tree); ``` 以上代码将会输出一个包含换后形结构的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值