动态遍历JSON格式化数字、货币数值适配图表库的方案咨询
结论
你的现有实现仅能覆盖部分场景,不算完全正确,存在3个潜在风险:
- 逗号替换逻辑不完整:
replace(',', '')只会替换字符串中第一个出现的逗号,若后续接口返回数值存在多段千位分隔(例如$1,234,567.89),处理后会残留第二个逗号,导致图表库解析失败 - 直接修改原始数据:代码直接覆盖了
json.data的原有值,若项目其他逻辑依赖带$、带逗号的原始格式,会引发连锁异常 - 未做类型校验:如果接口返回的某个字段值已经是数字类型而非字符串,调用
.replace()方法会直接抛出类型错误
如果你的业务场景可以确定「所有返回值都是字符串、数值最多只有一个千位分隔符、不需要保留原始数据」,现有代码可以正常运行。
优化实现方案
如果要覆盖所有边界情况,推荐调整为如下写法(保留lodash依赖,且不修改原数据):
const processedChartData = _.map(json.data, entry => { return _.mapValues(entry, value => { // 仅字符串类型需要做格式清洗 if (typeof value === 'string') { // 全局替换所有美元符号和逗号 return value.replace(/\$/g, '').replace(/,/g, ''); } return value; }) })
你可以直接将处理后的processedChartData传给图表库使用,你提到的百分比格式不需要额外处理。
内容的提问来源于stack exchange,提问作者S16
相关产品推荐
相关产品推荐

