I have this object:
{"": undefined}
and when I check this object for empty in this way:
_.isEmpty({"": undefined})
I get false
result, maybe in lodash we have another method?
I have this object:
{"": undefined}
and when I check this object for empty in this way:
_.isEmpty({"": undefined})
I get false
result, maybe in lodash we have another method?
_.isEmpty(obj, true)
var obj = {
'firstName': undefined
, 'lastName' : undefined
};
console.log(_.isEmpty(obj)); // false
console.log(_.isEmpty({})); // true
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
Please, see http://www.ericfeminella.com/blog/2012/08/18/determining-if-an-object-is-empty-with-underscore-lo-dash/
Your example object is not empty so instead perhaps you want to test if all properties are undefined
let o = {foo: undefined};
!_.values(o).some(x => x !== undefined); // true
It depends on how you want to check it. Do you want to check some or every
Then what you can do is :
import { some, isEmpty } from 'lodash'
console.log(some(this.yourObject, isEmpty))
In your case it cannot be called an empty object (Object.values(obj).length
would return 1), but for a completely empty object this can be used:
import { matches } from 'lodash';
matches(obj, {});
I guess this is a bit overkill, but this is what I use which recursively checks for nested objects too and uses lodash
.
function checkEmptyObject(obj) {
if (_.isEmpty(obj)) return true;
return _.isEmpty(
Object.entries(obj)
.map(([key, value]) => {
if (_.isEmpty(value)) return true;
if (value instanceof Object) return checkEmptyObject(value);
return false;
})
.filter((b) => b === false)
);
}
I'd do it this way
_.isEmpty(_.omitBy(object_to_check, _.isNil)
_.omitBy removes all the keys with null & undefined values in this example.
To remove only undefined you can use _.isUndefined
instead of _.isNil
To provide an alternative to Lodash - this is how I do the same with vanilla JS ES6.
const isEmpty = (obj) => {
return obj === undefined ? true : Object.keys(obj).length === 0
}
console.log(isEmpty(undefined))
console.log(isEmpty({}))
try this one
_.omitBy(
obj,
(v) =>
_.isUndefined(v) ||
_.isNull(v) ||
v === '' ||
(v && v instanceof Object && Object.keys(v).length === 0)
);