lodash:检查对象是否为空
lodash: check object is empty
我有这个对象:
{"": undefined}
当我以这种方式检查此对象是否为空时:
_.isEmpty({"": undefined})
我得到了 false
结果,也许在 lodash 中我们有另一种方法?
您的示例对象 不是 空 所以也许您想测试所有属性是否 undefined
let o = {foo: undefined};
!_.values(o).some(x => x !== undefined); // true
_.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>
这取决于你想如何检查它。
你想检查some or every
那么你可以做的是:
import { some, isEmpty } from 'lodash'
console.log(some(this.yourObject, isEmpty))
在您的情况下,它不能称为空对象(Object.values(obj).length
会 return 1),但对于完全空的对象,可以使用:
import { matches } from 'lodash';
matches(obj, {});
我想这有点矫枉过正,但这就是我使用的递归检查嵌套对象并使用 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)
);
}
提供 Lodash 的替代品 - 这就是我使用 vanilla JS ES6 做同样事情的方式。
const isEmpty = (obj) => {
return obj === undefined ? true : Object.keys(obj).length === 0
}
console.log(isEmpty(undefined))
console.log(isEmpty({}))
我有这个对象:
{"": undefined}
当我以这种方式检查此对象是否为空时:
_.isEmpty({"": undefined})
我得到了 false
结果,也许在 lodash 中我们有另一种方法?
您的示例对象 不是 空 所以也许您想测试所有属性是否 undefined
let o = {foo: undefined};
!_.values(o).some(x => x !== undefined); // true
_.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>
这取决于你想如何检查它。 你想检查some or every
那么你可以做的是:
import { some, isEmpty } from 'lodash'
console.log(some(this.yourObject, isEmpty))
在您的情况下,它不能称为空对象(Object.values(obj).length
会 return 1),但对于完全空的对象,可以使用:
import { matches } from 'lodash';
matches(obj, {});
我想这有点矫枉过正,但这就是我使用的递归检查嵌套对象并使用 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)
);
}
提供 Lodash 的替代品 - 这就是我使用 vanilla JS ES6 做同样事情的方式。
const isEmpty = (obj) => {
return obj === undefined ? true : Object.keys(obj).length === 0
}
console.log(isEmpty(undefined))
console.log(isEmpty({}))