js 双重for循环优化为.map写法

 let permissionId = []
      for (const i in menuList) {
        for (const j in permission) {
          if (menuList[i].id == permission[j].id) {
            permissionId.push(menuList[i].id)
          }
        }
      }

以上代码如何优化为.map的写法呢

在这里先谢谢各位大神们的解答了,小弟感激不尽!

阅读 4.9k
2 个回答
const map = permission.reduce((r, i) => (r[i.id] = true, r), {})
const permissionId = menuList.filter(i => !!map[i.id]).map(i => i.id)

一句话搞定

const permissionId = menuList.filter(m => permission.some(p => p.id === m.id))?.map(r => (r.id))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题