如何获取嵌套对象目标值?访问属性返回undefined问题排查
问题原因
你当前的访问路径缺失了中间层级"TAX VALUE INFORMATION",editedFields[section]对应的是包含"TAX VALUE INFORMATION"的对象,而不是直接包含"Improvement Value"的对象,所以直接用[key]访问会找不到对应属性,返回undefined。
解决方案
方案1:固定中间层级直接访问
如果"TAX VALUE INFORMATION"这个中间层是固定不变的,直接在访问路径中补上这一层即可:
const handleValues = (section: string, key: string, value: string | undefined) => { console.log(editedFields[section]?.["TAX VALUE INFORMATION"]?.[key]); // 输出 "$812,57" }
方案2:动态遍历中间层(适用于中间层不固定的情况)
如果中间层的键名可能变化,无法硬编码,可以遍历section对应对象的所有子属性,查找包含目标key的子对象:
const handleValues = (section: string, key: string, value: string | undefined) => { const sectionData = editedFields[section]; if (!sectionData) return; // 遍历所有中间子对象 for (const middleKey of Object.keys(sectionData)) { const middleData = sectionData[middleKey]; if (middleData && key in middleData) { console.log(middleData[key]); // 输出 "$812,57" break; // 找到后停止遍历 } } }
方案3:修改函数参数传入中间层键
如果可以调整handleValues的参数,直接传入中间层的键名,访问逻辑会更清晰:
// 新增middleKey参数,传入"TAX VALUE INFORMATION" const handleValues = (section: string, middleKey: string, key: string, value: string | undefined) => { console.log(editedFields[section]?.[middleKey]?.[key]); // 输出 "$812,57" }
内容的提问来源于stack exchange,提问作者Code The World
相关产品推荐
相关产品推荐

