I’m using Lodash to compare two objects returned from Postman but I want to ignore the dynamic values (page_view
and deletion.update_time
). How can I do this? I’ve tried passing in the property names into omit
but it’s not working… how can I resolve this issue? Thank you.
JavaScript
x
29
29
1
var obj1 = {
2
name: "James",
3
age: 17,
4
page_view: "2",
5
creation: "13-03-2016",
6
deletion: {
7
"article_id": 4469568,
8
"update_time": 1226,
9
}
10
}
11
var obj2 = {
12
name: "James",
13
age: 17,
14
page_view: "62",
15
creation: "13-03-2016",
16
deletion: {
17
"article_id": 4469568,
18
"update_time": 12265,
19
}
20
}
21
22
var result = _.isEqual(
23
_.omit(obj1, ['page_view', 'update_time']),
24
_.omit(obj2, ['page_view', 'update_time'])
25
);
26
if (!result) {
27
pm.expect.fail("Pro and Sta are different")
28
}
29
Advertisement
Answer
You need to specify this on the sub-object:
JavaScript
1
13
13
1
var obj1={name:"James",age:17,page_view:"2",creation:"13-03-2016",deletion:{"article_id":4469568,"update_time":1226,}}
2
var obj2={name:"James",age:17,page_view:"62",creation:"13-03-2016",deletion:{"article_id":4469568,"update_time":12265,}}
3
4
const stripDynamicValues = o => {
5
let toCompare = _.omit(_.cloneDeep(o), "page_view");
6
// Here, you need to work explicitly on the sub-object
7
toCompare.deletion = _.omit(toCompare.deletion, "update_time");
8
return toCompare;
9
};
10
11
var result = _.isEqual(stripDynamicValues(obj1), stripDynamicValues(obj2));
12
13
console.log(result);
JavaScript
1
1
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>