我有一个对象,有时它是空的,就像这样 {}
,其他时候它会有一些被设置为 null 的属性。
{
property1: null,
property2: null
}
我该如何确定此对象中的所有属性是否均为 null?如果它们都是null,则返回 false。
目前我正在使用 lodash 检查第一种情况,即对象为空。但我还需要处理第二种情况。
if (isEmpty(this.report.device)) {
return false;
}
return true;
我有一个对象,有时它是空的,就像这样 {}
,其他时候它会有一些被设置为 null 的属性。
{
property1: null,
property2: null
}
我该如何确定此对象中的所有属性是否均为 null?如果它们都是null,则返回 false。
目前我正在使用 lodash 检查第一种情况,即对象为空。但我还需要处理第二种情况。
if (isEmpty(this.report.device)) {
return false;
}
return true;
Object.values
将对象转换为数组,并使用 every
检查每个元素。使用 !
来否定这个值。
let report = {
property1: null,
property2: null,
}
let result = !Object.values(report).every(o => o === null);
console.log(result);
示例: 一些元素不是null
let report = {
property1: null,
property2: 1,
}
let result = !Object.values(report).every(o => o === null);
console.log(result);
Object.keys()
方法,它将返回该对象中的所有键作为数组。这使得您可以执行Object.keys(this.report.device).filter(key => !this.report.device[key] === null)
,这将返回非null键的数量,如果此值为0,则您已经得到了答案。null
属性并不是一个好的方法,最好将这些属性设置为undefined
或仅从API返回一个平坦的对象。function IsAllPropertiesNull(obj) {
return Object.values(obj).every(v=>v == null);
}
a = {'a': null, 'b':null};
var isAllNull = IsAllPropertiesNull(a)
// isAllNull = true
说明 - 获取对象的所有值 - 迭代它们并检查是否为null
祝你好运!
对于Es2015
if (Object.keys(obj).map(e => obj[e]).every(a => a.length === 0)) {
console.log('all are empty');
}
let obj = {
property1: null,
property2: null,
};
function isEmpty(o) {
return Object.entries(o).every(([k,v]) => v === null);
}
if(isEmpty(obj)) {
console.log("Object is empty");
}
为了检查对象是否具有所有键的空值,一种更简洁的方法可能是。
const set = new Set(Object.values(obj));
const hasOnlyNullValues = set.size === 1 && set.has(null);