如何使用JavaScript将指定对象转换为特定格式的数组?
JavaScript 对象转指定格式数组实现方案
需求说明
给定如下原始JavaScript对象:
{ "id":1, "vol":"0.0", "vol_per":"0.0%", "ABC":"8.30", "OFG":"13.85", "SPG":"70.80" }
需要将其转换为指定格式的数组(过滤掉id字段,每个元素包含field和header属性):
const data = [ {field:'vol',header:'VOL'}, {field:'vol_per',header:'VOL%'}, {field:'ABC',header:'ABC'}, {field:'OFG',header:'OFG'}, {field:'SPG',header:'SPG'} ]
Header 生成规则
从示例可总结出以下规则,同时支持扩展新增属性:
vol→ 转为全大写:VOLvol_per→ 替换下划线为%并大写前缀:VOL%- 全大写字母组成的字段(如
ABC、OFG)→ 直接保留原字段作为header - 可按需扩展其他通用规则(如下划线分割字段转为大写空格分隔)
实现代码
// 原始对象 const originalObj = { "id":1, "vol":"0.0", "vol_per":"0.0%", "ABC":"8.30", "OFG":"13.85", "SPG":"70.80" }; // 生成header的工具函数,可根据新增属性扩展规则 function getHeader(field) { switch(field) { case 'vol': return 'VOL'; case 'vol_per': return 'VOL%'; default: // 匹配全大写字段,直接返回 if (/^[A-Z]+$/.test(field)) { return field; } // 通用 fallback:下划线分割转大写空格分隔(应对新增的其他格式字段) return field.split('_').map(part => part.toUpperCase()).join(' '); } } // 核心转换函数 function convertToTargetArray(obj) { return Object.entries(obj) // 过滤掉不需要的id字段 .filter(([key]) => key !== 'id') // 映射为目标格式的对象 .map(([field]) => ({ field, header: getHeader(field) })); } // 执行转换并输出结果 const data = convertToTargetArray(originalObj); console.log(data);
代码说明
- 遍历与过滤:使用
Object.entries()将对象转为键值对数组,再通过filter()剔除不需要的id字段 - Header生成:通过
getHeader()函数根据预设规则处理每个字段,支持扩展新增属性的规则 - 映射组装:使用
map()将每个字段转换为目标格式的对象,最终组合成结果数组
内容的提问来源于stack exchange,提问作者Roma
相关产品推荐
相关产品推荐

