优化代码 const list = await store.dispatch('user/getMenuRole') const menuList = [] let hiddenMenuList = null for (let i = 0; i < list.length; i++) { const item = list[i] if (item.hidden) { // console.log(item, '---') for (let index = 0; index < hiddenList.length; index++) { const vmItme = hiddenList[index] const childrenData = [] vmItme.children.forEach((v, vIndex) => { // console.log(item.children[vIndex]?.meta.menuName) // console.log(v.name) item.children.forEach(s => { if (v.name === s.meta.menuName) { s.meta.childrenBtnList.length > 0 && ( v.meta.childrenBtnList = s.meta.childrenBtnList ) childrenData.push(v) const routerList = vmItme routerList.children = childrenData hiddenMenuList = routerList } }) }) } } else { menuList.push(item) } }
时间: 2024-01-04 13:03:20 浏览: 82
优化代码
这段代码的逻辑比较复杂,但是可以根据实际情况进行一些优化,比如:
1. 使用 `forEach` 循环遍历数组时,可以使用 `for...of` 循环或者数组的 `map` 方法来代替,使代码更加简洁易读。
2. 可以使用解构赋值语法来简化代码,例如:`const { children } = vmItme` 可以代替 `const children = vmItme.children`。
3. 可以使用 `Array.prototype.flatMap()` 方法来简化嵌套的循环逻辑,从而减少代码的嵌套层数。
4. 可以使用 `Array.prototype.find()` 方法来查找数组中符合条件的元素,而不是使用 `forEach` 循环遍历。
下面是代码优化后的示例:
```
const list = await store.dispatch('user/getMenuRole')
const menuList = []
const hiddenMenuList = []
for (const item of list) {
if (item.hidden) {
for (const vmItme of hiddenList) {
const childrenData = vmItme.children
.flatMap(v => item.children
.find(s => v.name === s.meta.menuName)
?.meta.childrenBtnList.length > 0
? ({ ...v, meta: { childrenBtnList: s.meta.childrenBtnList } })
: v
)
vmItme.children = childrenData
hiddenMenuList.push(vmItme)
}
} else {
menuList.push(item)
}
}
```
这样,代码逻辑更加清晰,可读性更强。
阅读全文