This is a bit hard to parse; would

    if ((!orCounts[parentKey]? || orCounts[parentKey] == 0) && (rationale[parentKey]) || !rationale[parentKey]?)

be any clearer?