我有这个对象:
{"": undefined}
当我以如下方式检查是否为空时:
_.isEmpty({"": undefined})
我得到了false
的结果,也许在lodash中我们有另一个方法?
我有这个对象:
{"": undefined}
当我以如下方式检查是否为空时:
_.isEmpty({"": undefined})
我得到了false
的结果,也许在lodash中我们有另一个方法?
_.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>
您的示例对象不是空的,因此也许您想测试所有属性是否未定义
let o = {foo: undefined};
!_.values(o).some(x => x !== undefined); // true
在您的情况下,它不能被称为一个空对象(Object.values(obj).length
会返回1),但对于完全为空的对象,可以使用以下代码:
import { matches } from 'lodash';
matches(obj, {});
_.isEmpty(_.omitBy(object_to_check, _.isNil)
在这个例子中,_.omitBy
会删除所有具有null和undefined值的键。如果只想删除undefined值,可以使用_.isUndefined
代替_.isNil
我想这可能有点过头了,但这是我使用的方法,它可以递归检查嵌套对象,并使用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)
);
}
const isEmpty = (obj) => {
return obj === undefined ? true : Object.keys(obj).length === 0
}
console.log(isEmpty(undefined))
console.log(isEmpty({}))
obj
确实是null
,这种方法会抛出一个错误。("TypeError: Cannot convert undefined or null to object") - undefined试一试这个
_.omitBy(
obj,
(v) =>
_.isUndefined(v) ||
_.isNull(v) ||
v === '' ||
(v && v instanceof Object && Object.keys(v).length === 0)
);
{}
代表一个空对象。 - MForMarlon