Efficient way to check nested properties in object are truthy?

Basically is there an easy way to write 'If any of these properties are null, treat the whole object as null/don't return.' for instances where I'm mapping a lot of properties to a new object.

const object = {
one: {a: 'a',
            b: 'b',
            c: {
                c1: 'c1',
                c2: null}
            },
}
// if properties of object !== null
return {
    myObject: {
        myA: object.a,
        myC1: object.c.c1
        myC2: object.c.c2
        ...
    }
}
//else return something else

I'd prefer to not have to write a huge conditional to get around this.


Using recursion you can quickly get a boolean that indicates whether or not there is a null value in an object.

matchNULLValue will return true every time it finds a null-valued property, this goes for nested objects as well.

const object = {
    one: {
        a: 'a',
        b: 'b',
        c: {
            c1: 'c1',
            c2: null
        }
    },
}

function matchNULLValue(object) {
    for (const value of Object.values(object)) {
        if (value === null || (typeof value === "object" && matchNULLValue(value))) {
            return true;
        }
    }

    return false;
}

if (matchNULLValue(object)) {
    console.log("There is some property on this object with null value.");
} else {
    console.log("There is no property on this object with a null value.");
}