You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman中使用Lodash比较对象忽略指定键失效如何解决

问题根因

_.omit默认仅删除对象的顶层自有属性:

  • 顶层的page_view字段可以被正常剔除
  • update_time是挂载在deletion下的二级嵌套属性,顶层对象不存在该名称的属性,所以这部分动态值完全没被移除,两个对象的deletion.update_time值不一致,最终等值判断返回false。
可行方案

以下两种方案都可以在Postman内置的Lodash环境下正常运行:

方案1:逐层处理字段

先剔除顶层动态字段,再单独处理嵌套对象内的动态字段,逻辑透明无兼容问题:

var obj1 = {
  name: "James",
  age: 17,
  page_view: "2",
  creation: "13-03-2016",
  deletion: {
    "article_id": 4469568,
    "update_time": 1226,
  }
}
var obj2 = {
  name: "James",
  age: 17,
  page_view: "62",
  creation: "13-03-2016",
  deletion: {
    "article_id": 4469568,
    "update_time": 12265,
  }
}

const normalize = (target) => {
  const res = _.omit(target, ['page_view']);
  res.deletion = _.omit(res.deletion, ['update_time']);
  return res;
}

var result = _.isEqual(normalize(obj1), normalize(obj2));
if (!result) {
  pm.expect.fail("Pro and Sta are different")
}

方案2:传入嵌套路径

_.omit支持传入数组格式的属性路径精准定位嵌套字段,不需要逐层手动处理:

var result = _.isEqual(
  _.omit(obj1, ['page_view', ['deletion', 'update_time']]),
  _.omit(obj2, ['page_view', ['deletion', 'update_time']])
);
if (!result) {
  pm.expect.fail("Pro and Sta are different")
}

注意:不要使用字符串格式的嵌套路径'deletion.update_time',Postman内置的Lodash版本偏旧,对字符串嵌套路径的支持存在兼容问题,传数组路径['deletion', 'update_time']可以适配所有版本。

内容的提问来源于stack exchange,提问作者VTTP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:09:18