JavaScript比较嵌套对象数组时如何忽略指定属性完成校验
解决方案
完全可以通过map回调内的嵌套解构语法实现需求,你的原有代码问题出在两点:
- 嵌套解构
detail对象时,仅提取了要忽略的属性,没有将detail剩余属性重新组装回返回对象中,导致最终结果丢失detail字段 - 顶级要忽略的属性名拼写错误,你写的
dbIdentifierIdentifier多了后缀,导致dbIdentifier没有被成功过滤
正确实现代码
const filteredArray = responseBody.map(({ dbIdentifier, // 解构出顶级要忽略的属性,不加入后续返回值 detail: { designAndCondition, developmentCompletionDate, ...restDetail // 收集detail中除上述两个属性外的所有剩余属性 }, ...restTop // 收集顶级除dbIdentifier外的所有剩余属性(address、valuation等) }) => ({ ...restTop, detail: restDetail // 把处理后的detail对象重新拼接回返回值 }))
效果验证
上述代码处理后的返回结果会自动过滤所有你不需要校验的字段,结构完全和你的预设待校验数据对齐,后续可正常按address.uniqueIdentifier排序后转JSON比对,或者用深度相等校验工具(如lodash的_.isEqual)直接比对。
如果后续需要新增忽略字段,只需在对应结构层级的解构位置添加属性名即可,适配性强。
内容的提问来源于stack exchange,提问作者DrumBongo
相关产品推荐
相关产品推荐

