I have seen multiple other questions about how to do this, but I am yet to find one that accounts for this scenario.
I have an object (lets call it obj
), which has object properties (lets call them objProp
). I need to find the key of an objProp
so I can delete it from obj
. I run into an issue because I cannot use indexOf
or anything like this because my values are objects themselves.
//obj declaration etc
delete obj[getKeyByValue(obj, objProp)];
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
};
the above will not work because objProp
is another object, is there another way this can be done?
CodePudding user response:
According to ECMAScript Specification ===
will always return false
when you compare 2 different objects.
If the order of your objects'(and all inside nested objects) key are the same, JSON.stringify(object[key]) === JSON.stringify(value)
may work.
Otherwise, consider something like Lodash's _.isEqual. Either use it directly by introducing lodash as a dependency or implement something similar by your own.