JavaScript中如何将布尔值属性对象转为大写键名数组
需求场景
你需要将Express Router中layer.route.methods存储的HTTP方法配置,转换为元素为大写方法名的一维数组:
- 源结构:
{ get: true, post: true } - 目标结果:
["GET", "POST"]
你当前的硬编码写法仅能适配get、post两种方法,扩展性差,以下是更简洁通用的实现。
最优实现(通用无硬编码)
直接遍历对象属性,自动提取所有启用的HTTP方法,无需手动枚举方法名,支持get/post/put/delete/patch/options等所有HTTP方法:
const methods = Object.keys(layer.route.methods) .filter(method => layer.route.methods[method]) .map(method => method.toUpperCase())
提示:Express 生成的
route.methods对象中,启用的方法对应值固定为true,不存在值为假的启用项,这种场景下可以省略filter步骤,代码更短:const methods = Object.keys(layer.route.methods).map(m => m.toUpperCase())
原有写法的不足
- 硬编码枚举方法名,每新增支持一种HTTP方法就要重复写短路判断逻辑,冗余度高
- 利用逻辑或短路触发push副作用的写法不符合常规代码阅读习惯,维护成本高
内容的提问来源于stack exchange,提问作者Jos
相关产品推荐
相关产品推荐

