我想检查3个RGB值是否基本相等,但有时无论哪种方式它们的值都是1或什至2,所以并不是那么简单。因此90,90,90
应该等于90,88,90
。
我想出的最好的结果是:
if (r != g && r != b) {
if ((r != b && r != (b - 1))) {
// etc
}
}
Expected output:
91,90,90 = true
93,89,93 = false
91,90,89 = true
答案 0 :(得分:5)
您可以在数组上使用every()
并检查每个最小值(或最大值)的绝对差b / w是否小于2
或等于2
>
const checkRBG = arr => {
let min = Math.min(...arr);
return arr.every(x => Math.abs(min-x) <=2);
}
const tests = [
[91,90,90],
[93,89,93],
[91,90,89],
[90,88,92]
]
tests.forEach(x => console.log(checkRBG(x)))
答案 1 :(得分:0)
如果要执行 if()
语句,请执行以下操作:
var foo = 1;
var baz = true;
var bar = "Hello";
// Not equals (abstract equality)
if(foo !== 2) {
console.log('Not 2');
}
// Equals (abstract equality)
if(baz == "false") {
console.log('false!');
}
// Equals (strict equality)
if(bar===new String('Hello')) {
console.log('Hello as a new String!');
} /* Not equals (strict equality) */ else if(bar==="Hello") {
console.log('Hello as a string');
}
但 不是 !=
或 =
实际上我只是想说“不要使用=
或==
或===
”(在下面的解释)
==
返回 true
,如果它具有 types相等的 EXCEPT 相等
例如...
console.log(1 == "1");
// Output: true
console.log(1 == true);
// Output: true
console.log("foo" == new String('foo'));
// Output: true
===
如果存在任何不等式(字面上为 ANY 不等式),则会返回 false
例如...
console.log(1 === "1");
// Output: false
console.log(1 === true);
// Output: false
console.log("foo" === new String('foo'));
// Output: false