js 去重并统计数量,然后去重后的子级再添加到父级的数组里去。该怎么写呀?
想做到下面这样的效果额。 自己现在只做到了去重并统计。但是想子级以数组的形式进入对应的父级对象里。
具体效果就是跟 flomo 这个侧边栏的一级二级目录效果一样。不过多了个统计每个 tag 标签里的数量是多少。
好难呀。求救求救。
分类1 //(这个没有写二级标签)
分类2/二级目录1
分类2/二级目录2
分类2/二级目录3
分类2/二级目录4
分类3 //(这个没有写二级标签)
分类4/二级目录1
分类4/二级目录2
分类4/二级目录3
分类4/二级目录4
分类5 //(这个没有写二级标签)
分类6/二级目录1
分类6/二级目录2
分类6/二级目录3
分类6/二级目录4
回复
1个回答

test
2024-07-16
整体思路:
- 去重并统计子目录数量 //忽略
- 获取一级菜单数组、获取子菜单数组
- 生成最终的结果(结构自行更改)
demo:
let a =['分类1','分类1/目录1','分类1/目录2','分类2','分类2/目录1','分类2/目录2'] //去重数组
let arr1 = a.filter(e=>!e.includes('/'))//以'/'过滤一级目录
//得到 ['分类1', '分类2']
let arr2 = a.filter(e=>e.includes('/'))//取反过滤得到子菜单
//得到 ['分类1/目录1', '分类1/目录2', '分类2/目录1', '分类2/目录2']
const list = arr1.map(e=>{const list = []
for (let index = 0; index < arr2.length; index++) {
const element = arr2[index];
// 判断是否包含主菜单
if(element.includes(e)){
list.push(element)
}
}
const obj = {menu:e,list:list}
return obj
})
//list = [{"menu":"分类1","list":["分类1/目录1","分类1/目录2"]},{"menu":"分类2","list":["分类2/目录1","分类2/目录2"]}]
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容