Angular中如何根据接口返回JSON的字段值动态过滤生成目标JSON结构
实现方案
你可以通过遍历对象所有键的方式实现动态筛选,不需要逐个字段写if判断,两种目标结果的实现代码如下:
场景1:得到值为0的字段组成的键值对对象
// 通用筛选函数,可自定义匹配的目标值 function filterFieldsByValue(originObj: Record<string, any>, targetValue: any) { // 遍历对象所有键值对,筛选出值匹配的项后重新组装为对象 return Object.fromEntries( Object.entries(originObj).filter(([_, value]) => value === targetValue) ) } // 调用示例,response为你拿到的接口返回JSON const result = filterFieldsByValue(response, 0)
调用后输出的结果就是你需要的第一种格式:
{ "First_Name": 0, "Company": 0, "Country_Code": 0 }
场景2:得到值为0的字段名组成的数组
// 通用获取字段名函数 function getFieldNamesByValue(originObj: Record<string, any>, targetValue: any) { // 遍历所有字段名,筛选出对应值匹配的字段 return Object.keys(originObj).filter(key => originObj[key] === targetValue) } // 调用示例 const avoidFields = getFieldNamesByValue(response, 0)
调用后输出的结果就是你需要的第二种格式:
["First_Name", "Company", "Country_Code"]
原代码问题说明
你现有代码中把单条response包装进数组遍历、硬编码判断单个字段的写法,自然需要大量if语句逐个匹配字段,上述通用函数不需要修改即可适配后续JSON新增字段的场景,完全满足动态处理需求。
内容的提问来源于stack exchange,提问作者Rinzler21
相关产品推荐
相关产品推荐

