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;
回答:
这里的children
赋值为country
时就不是数组了,然后你fn
那个函数里没有判断list
参数是不是数组,country.length
用的也是全等号(三个等)即undefined === 0
是不成立的,那么就继续往下走,就会出现country.forEach
的情况,那就报错了
以上是 vue数据结构处理+反显问题 ?? 的全部内容, 来源链接: utcz.com/p/934083.html