TypeScript中使用forEach遍历对象时将null值替换为'-'的实现方法
实现方案
原有代码问题说明
你写的代码逻辑存在偏差:forEach 遍历拿到的 v 是数组中的单个对象本身,直接判断 v === null 无法匹配到对象内部的null属性值,需要额外遍历单个对象的所有键值对做判断。另外你给出的示例中 proposedTerm 是带 years 后缀的字符串,需要先提取数值再做计算。
完整实现代码
res.items.forEach((item: Record<string, any>) => { // 遍历对象所有属性,将null值统一替换为'-' Object.keys(item).forEach(key => { if (item[key] === null) { item[key] = '-'; } }) // 单独处理proposedTerm属性 if (item.proposedTerm) { // 提取内容中的数字部分,兼容纯数字、带单位两种输入格式 const termNum = parseFloat(item.proposedTerm.toString()) if (!isNaN(termNum)) { // 按要求计算后拼接单位 item.proposedTerm = `${Math.round(termNum * 10) / 10} years` } } })
补充说明
如果你有明确的TS对象类型定义,可以把代码里的Record<string, any>替换为你的实际对象类型,类型适配性更好。如果不需要修改原对象,可以在遍历前先对对象做浅拷贝再处理。
内容的提问来源于stack exchange,提问作者Mark Richards
相关产品推荐
相关产品推荐

