在属性类型不同的Javascript对象中查找假值?

在属性类型不同的Javascript对象中查找假值?,javascript,Javascript,我有一个这样结构的物体 const object = { property1: null, property2: { array1: [], array2: [] }, property3: { prop1: null, prop2: null } } 我需要检查对象中的每个属性或者每个属性中的每个值,如果它是falsy-null,或者是空数组,那么就对它做一些处理。否则就别管它了 考虑到某些属性具有嵌套属性等,我不确定如何执行此操作 非常感

我有一个这样结构的物体

const object = {
  property1: null,
  property2: {
    array1: [],
    array2: []
  },
  property3: {
    prop1: null,
    prop2: null
  }
}
我需要检查对象中的每个属性或者每个属性中的每个值,如果它是falsy-null,或者是空数组,那么就对它做一些处理。否则就别管它了

考虑到某些属性具有嵌套属性等,我不确定如何执行此操作


非常感谢所有帮助。

您可以在循环中为…使用
,以实现以下目标:

const object1={
属性1:null,
属性2:错误,
prop3:“你好”,
prop4:1234
}
for(让attr在object1中){
如果(!object1[attr]){
log(attr,“这是假的”);
}否则{
log(attr,“有一个值”);
}

}
您可以采用迭代和递归的方法

首先获取对象的条目并迭代键/值对。然后检查值是
null
还是空数组。如果是这样,请执行一些操作,如
console.log
并返回回调

如果没有,请检查对象并使用实际值再次调用函数

功能iter(对象){
对象
.条目(对象)
.forEach([k,v])=>{
if(v==null | | Array.isArray(v)&&&!v.length){
log(k,'为null或空');
返回;
}
if(v&&typeof v=='object'){
iter(v);
}
});
}
const object={property1:null,property2:{array1:[],array2:[]},property3:{prop1:null,prop2:null};

iter(object)这将是递归的完美示例,因为它将动态深入到每个嵌套对象的对象结构中

const object = {
  property1: null,
  property2: {
    array1: [],
    array2: []
  },
  property3: {
    prop1: null,
    prop2: null
  }
}

const findFalsey = obj => {
    for(let key in obj) {
        if(typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
            findFalsey(obj[key])
        }
        if(!obj[key] || (Array.isArray(obj[key]) && obj[key].length === 0 )) {
            console.log('found falsey value')
        }
    }
}

findFalsey(object)

这需要一个
hasOwnProperty
检查,否则您将得到意外的结果如果您有多个嵌套级别,会发生什么情况,如示例所示?如果您有一个“n-level-nested”结构,您需要通过它递归,只要递归函数可能检测到更多嵌套对象简单递归函数,如果该属性是数组或对象,那么它会用当前属性值再次调用自身…?我有点惊讶,它得到了3次投票。这当然是缺乏努力