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

我这段代码处理的有什么问题吗 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

})


回答:

要保证 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;


回答:

vue数据结构处理+反显问题 ??
这里的children赋值为country时就不是数组了,然后你fn那个函数里没有判断list参数是不是数组,country.length用的也是全等号(三个等)即undefined === 0是不成立的,那么就继续往下走,就会出现country.forEach的情况,那就报错了

以上是 vue数据结构处理+反显问题 ?? 的全部内容, 来源链接: utcz.com/p/934083.html

回到顶部