数组方法积累

57 阅读1分钟
## 1.递归 通过一个编码,找到这条数据对应的链路数据。
const fn = (code, treeData) => {
        if(!treeData.length) return []
        for(let i = 0; i <= treeData.length; i += 1){
            const treeItem = treeData[i]
            if(treeItem.code === code) return [treeItem]
            const path = fn(code,treeItem.children || [])
            if(path.length > 0) return [treeItem,...path]
        }
        return []
 }





## 2.递归 通过一个标示去树中查询对应的子节点(包括深层子节点),且将传入的内容进行替换,返回数据。
  使用场景:多层表格行编辑后,触发更新state,来触发table视图更新
  参数:
      code:传入具有唯一性的标示 如id,key等等
      treeData:元数据,可以是一个数组([{}])也可以是可深成嵌套的树
      editData:需要替换的数据({})
      
const replaceByKey = (code, treeData, editData) => {
    if (!treeData.length) return []
    return treeData.map((item) => {
      let newItem = {...item}
      if (newItem.key === code) {
        newItem = {
          ...newItem,
          ...editData,
          children: newItem.children
        }
      }
      return {
        ...newItem,
        children: replaceByKey(code, newItem.children || [], editData)
      }
    })
  }