当前位置: 首页 > 知识库问答 >
问题:

javascript - vue数据结构处理+反显问题 ??

阴雪风
2023-04-20

我这段代码处理的有什么问题吗 handle函数中的forEach都提示list.forEach is not a function
处理麻木了 大佬们有思路可以提供下 感谢感谢

 _this.$nextTick(() => {
    // planCounty是全部的数据 这段数据是头条的city省市区县数据
    // val是已经选中的数据 
      let planCounty = adAudience.$refs.region.$refs.planCounty
      console.log(planCounty)
      const handle = (list) => {
        if (!Array.isArray(list)) return
        list.forEach((item) => {
          const itemList = item.children || list
          const ids = []
          const fn = (list) => {
            if (list.length === 0) return false
            list.forEach((v) => {
              if (val.includes(v.id)) {
                ids.push(v.id)
              }
            })
            return list.every((v) => {
              if (v.children && v.children.length > 0) return fn(v.children)
              return val.includes(v.id)
            })
          }
          const isAll = fn(itemList)
          if (isAll) {
            arr.push(item.id)
          } else if (item.children && item.children.length > 0) {
            handle(item.children)
          } else {
            arr.push(...ids)
          }
        })
      }
      const threeLevelData = planCounty.cityLevelList.map((city) => {
        return {
          id: city.id,
          name: city.name,
          children: city.children.map((county) => {
            return {
              id: county.id,
              name: county.name,
              children: county.children
                ? county.children.map((town) => {
                    return {
                      id: town.id,
                      name: town.name
                    }
                  })
                : county
            }
          })
        }
      })
      console.log(threeLevelData)
      const arr = []
      handle(threeLevelData)
      adAudience.$refs.region.planCounty = arr
    })

共有2个答案

和选
2023-04-20

截屏2023-04-19 19.07.21.png
这里的children赋值为country时就不是数组了,然后你fn那个函数里没有判断list参数是不是数组,country.length用的也是全等号(三个等)即undefined === 0是不成立的,那么就继续往下走,就会出现country.forEach的情况,那就报错了

融泓
2023-04-20

要保证 planCounty.cityLevelList 和 item.children 都是数组,你改一下这两行代码试试:

if (Array.isArray(item.children) && item.children.length > 0) {
    handle(item.children);
}

把这行 const itemList = item.children || list 改成下面的

const itemList = Array.isArray(item.children) ? item.children : list;
 类似资料:
  • 要求el-input输入的值是数字数组形式:[123,123],组件定义的value是string类型,所以在查询的时候需要对input输入的值进行转换。 我的处理方式: handleFormFormat方法是处理动态表单数据格式化的: 什么条件不输的时候查出的结果打印: 输入数字后查询打印结构(显示数据处理过后的): 但是network传的值却没有改变,还是字符串形式的: 求助大佬提点一下,哪里

  • 本文向大家介绍数据结构中的溢出处理,包括了数据结构中的溢出处理的使用技巧和注意事项,需要的朋友参考一下 对于新对(键,元素)已满,主存储桶发生溢出。 我们可能会解决 以某种系统的方式在哈希表中搜索未满的存储桶。 线性探测(线性开放寻址)。 二次探测。 随机探测。 通过允许每个存储桶保留其为本地存储桶的所有对的列表来消除溢出。 数组线性列表。 链。 执行开放寻址以确保所有元素都直接存储在哈希表中,因

  • (自己模拟的数据效果) 如上路径动画,目前的问题是运行的坐标数据是依照地图来的 需要转换为画布能够展示的范围,但运行数据之前差别大部分情况下都很小 我要怎样处理会合适一点? help大佬们

  • 包含了多种基于 JavaScript 的算法与数据结构。每种算法和数据结构都有自己的 README,包含相关说明和链接,以便进一步阅读 (还有 YouTube 视频) 。

  • 我在为考试学习时发现了我无法处理的问题: 设计一个用于处理(封闭)间隔的数据结构,它将提供三个操作: 插入(x,y)-添加间隔[x,y] 移除(x,y)-移除间隔[x,y] Count(x,y)-计算纯粹包含在区间内的区间数[x,y] x、 y是从1到n的整数。所有操作最多需要O((log n)2) 有人能帮忙吗?

  • 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据(JS里可以是任意类型)。 关键点:连续的存储空间(数组可以进行随机访问) // js let data = [] // c int data[200] = { 0 }; // 编译时 就已经确定所有的值为零 // java int data[] = new int[3]; // 开辟了一个长度为3的数组 在Ch