根据您提供的代码片段,问题可能出在逻辑处理或数据匹配环节。以下是关键点分析和建议:
问题原因分析
- 条件过滤不彻底:
matchedLoanDetail
仅用于查找匹配项,但后续未严格限制只渲染匹配的数据 - 路径处理问题:
loan.path.split('.')[1]
获取的Index可能未正确应用到数据过滤 - reduce操作影响:最后的
.reduce()
操作可能保留了不需要的子项
修改建议(关键部分)
if(matchedLoanDetail) {
// 确保只处理匹配到的loan
const Index = loan.path.split('.')[1];
// 先过滤掉不符合条件的child项
loan.child = loan.child.filter(child => {
// 示例:只保留特定code的子项(根据业务需求调整)
const keepCodes = ['overduePeriod', 'productLine', ...];
return keepCodes.includes(child.code);
// 或者根据matchedLoanDetail中的值进行过滤
// return child.value === matchedLoanDetail[child.code];
});
// ...其他业务逻辑...
}
需要补充的信息
loanDetailData
的结构示例- 完整的字段映射关系(如哪些字段需要完全匹配)
- UI渲染部分的代码(可能是展示层的问题)
建议在console.log(matchedLoanDetail)
后检查:
- 确认返回的数据确实包含差异字段
- 检查最终生成的
authMapLoan
是否正确过滤了字段
如果需要更精确的解决方案,请提供:
loanDetailData
的完整数据结构样例- “一致的值”具体指哪些字段需要匹配
内容由零声教学AI助手提供,问题来源于学员提问