ES6遍历对象数组处理字段值 如何不用if/else实现空值替换和首字母大写
ES6 最简最优实现方案
核心思路是抽离重复的字段处理逻辑,统一遍历需要处理的字段,彻底避免冗余的if/else判断,同时支持灵活扩展需要处理的字段。
实现代码
// 公共字符串处理函数:空值返回N/A,非空值首字母大写 const formatField = (val) => val ? val[0].toUpperCase() + val.slice(1) : 'N/A' // 定义需要批量处理的字段列表,后续增减字段只需修改此处 const targetFields = ['name', 'title', 'occupation'] const result = array.map(item => { // 可选方案1:直接修改原数组对象(和你原有写法行为一致) targetFields.forEach(field => item[field] = formatField(item[field])) return item // 可选方案2:不修改原数组,返回全新对象(更推荐的无副作用写法) // return { // ...item, // ...Object.fromEntries(targetFields.map(field => [field, formatField(item[field])])) // } })
方案优势
- 无冗余重复代码,整体逻辑高度复用
- 后续需要新增/减少需要处理的字段,只需要修改
targetFields数组即可,维护成本极低 - 可选无副作用实现,不会污染原始输入数组,符合ES6函数式编程的最佳实践
- 输出结果和预期完全一致
内容的提问来源于stack exchange,提问作者programhur
相关产品推荐
相关产品推荐

