JavaScript处理RPA返回对象的键格式问题以获取指定值
问题解决方法
核心问题分析
你原来的代码存在两个关键错误:
JSON.stringify加replace的方式仅能去除键的前后空格,无法处理键中间的多空格和特殊字符(如¾)for...in循环里的dat是字符串类型的键名,并非对象,因此dat.NombreAtencion必然返回undefined
单对象处理方案
编写通用清理函数,遍历原对象所有键,清理后构建新对象:
function cleanObjectKeys(obj) { const cleanedObj = {}; for (const key in obj) { // 清理规则:去除前后空格、合并中间多空格、替换¾为o const cleanedKey = key.trim().replace(/\s+/g, '').replace('¾', 'o'); cleanedObj[cleanedKey] = obj[key]; } return cleanedObj; } // 测试示例 let data = { Fecha: '2022-12-14T00:00:00', Hora: '1899-12-31T16:14:00', 'Aten.': 73, ' Nro Ing ': 0, Cerrada: 'S', ' ': ' ', ' Nombre Atenci¾n ': 'AMBULATORIA', 'EstadoHC.Electronica': ' - ', Profesional: ' GARCIA CHAVERRA MADELEINE ', Especialidad: ' MEDICINA GENERAL ', Diagnostico: ' ENFERMEDAD CARDIACA, NO ESPECIFICADA ', 'Num.Cta': 0 }; const cleanedData = cleanObjectKeys(data); console.log(cleanedData.NombreAtencion); // 输出 AMBULATORIA
批量处理对象数组方案
若需处理一组对象,直接遍历数组调用清理函数即可:
// 示例对象数组 const dataArray = [ { /* 第一个待处理对象 */ }, { /* 第二个待处理对象 */ }, // ...更多对象 ]; // 批量处理 const cleanedArray = dataArray.map(obj => cleanObjectKeys(obj)); // 调用示例:获取第一个处理后对象的目标值 console.log(cleanedArray[0].NombreAtencion);
可选格式优化
如果需要保留键的部分格式(如仅去除前后空格,中间多空格保留单个),可修改清理规则:
// 仅去前后空格、替换特殊字符,中间多空格转为单个 const cleanedKey = key.trim().replace(/\s+/g, ' ').replace('¾', 'o');
内容的提问来源于stack exchange,提问作者Luiz Villalba
相关产品推荐
相关产品推荐

