JavaScript检查三个值是否在2的公差范围内相等

时间:2019-05-19 10:31:37

标签: javascript comparison

我想检查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

2 个答案:

答案 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