You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:55:05