Reputation: 1543
I have two object:
obj1
{
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"qty_min": 0,
"qty_med": 0,
"qty_max": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
}
obj2
{
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
}
How can I remove duplicate and get element not exist in obj2
so my new obj will be:
newObj
{
"qty_min": 0,
"qty_med": 0,
"qty_max": 0,
}
I can use lodash pick
but I dont want to manually entered the key name that I want to filter.
const newObj = pick(obj1, [
'qty_min',
'qty_med',
'qty_max',
]);
Thanks in advance.
Upvotes: 1
Views: 88
Reputation: 191976
With lodash you can _.omit()
from obj1
all the _.keys()
of obj2
:
const obj1 = {"uuid":"","open_bal_qty":0,"open_bal_value":0,"qty_min":0,"qty_med":0,"qty_max":0,"kedai_uuid":"198ceaef-4ced-4207-9ba0-62afbb42bb85"};
const obj2 = {"uuid":"","open_bal_qty":0,"open_bal_value":0,"kedai_uuid":"198ceaef-4ced-4207-9ba0-62afbb42bb85"};
const newObj = _.omit(obj1, _.keys(obj2));
console.log(newObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
Upvotes: 2
Reputation: 50291
Use for..in
to iterate the object and Object.hasOwnProperty
to check if the second object have the same key
var obj1 = {
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"qty_min": 0,
"qty_med": 0,
"qty_max": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
}
var obj2 = {
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
}
var newObj = {};
for (var keys in obj1) {
if (!obj2.hasOwnProperty(keys)) {
newObj[keys] = obj1[keys]
}
}
console.log(newObj)
Upvotes: 1
Reputation: 57944
You could use _.pick
in conjunction with _.difference
by finding the difference between the two objects' keys and picking those keys:
const obj1 = {
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"qty_min": 0,
"qty_med": 0,
"qty_max": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
};
const obj2 = {
"uuid": "",
"open_bal_qty": 0,
"open_bal_value": 0,
"kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85"
};
const obj1Keys = _.keys(obj1); //or Object.keys
const obj2Keys = _.keys(obj2);
console.log(_.pick(obj1Keys > obj2Keys ? obj1 : obj2, _.difference(obj1Keys, obj2Keys)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
Upvotes: 1