JavaScript实现:检查三个RGB值是否在±2公差范围内相等
解决RGB值基本相等的判断问题
嘿,我看你在纠结怎么判断三个RGB值是否基本相等,允许±1或±2的偏差,原来的嵌套if逻辑确实太绕了,很容易漏判情况,我给你一个更清晰可靠的方案!
核心思路
我们的目标是确保三个值中任意两两之间的差值绝对值不超过2——只要满足这个条件,就符合你说的“基本相等”要求。
代码实现(以JavaScript为例)
function areRGBValuesSimilar(r, g, b) { const maxAllowedDifference = 2; // 检查每一对值的差值是否都在允许范围内 return Math.abs(r - g) <= maxAllowedDifference && Math.abs(r - b) <= maxAllowedDifference && Math.abs(g - b) <= maxAllowedDifference; }
如果是Python的话,逻辑完全一致:
def are_rgb_values_similar(r, g, b): max_allowed_diff = 2 return abs(r - g) <= max_allowed_diff and \ abs(r - b) <= max_allowed_diff and \ abs(g - b) <= max_allowed_diff
验证你的示例
- 输入
91,90,90:两两差值为1、1、0,都≤2 → 返回true - 输入
93,89,93:93和89的差值是4,超过2 → 返回false - 输入
91,90,89:91和89的差值是2,刚好符合要求 → 返回true
为什么比原来的逻辑好
你原来的嵌套if很容易遗漏判断(比如没考虑g和b之间的差值),而且逻辑可读性极差。这个方案直接把需求转化为明确的条件判断,既直观又不会漏判任何情况,后续维护也方便。
内容的提问来源于stack exchange,提问作者Hasen
相关产品推荐
相关产品推荐

