如果数字在javascript中的2个数字之间,如何返回true?

时间:2017-03-01 20:38:06

标签: javascript

if()条件下返回true的最有效方法是检查一个数字是否介于另外两个之间。我最大的问题是数量越多,数量越少,必须是可以交换的(见例子)。它还必须排除比较器(如在多于两者之间?)。

实施例

x = 14,y = 7,我们检查b = 8是否介于x和y之间:return true

x = 6,y = 12,我们检查b = 11是否介于x和y之间:return true

x = 6,y = 12,我们检查b = 12是否介于x和y之间:return false

x = 12,y = 6,我们检查b = 12是否介于x和y之间:return false

x = 6,y = 12,我们检查b = 6是否介于x和y之间:return false

4 个答案:

答案 0 :(得分:2)

您可以使用:

function isBetween(x, y, b) {
    return b > Math.min(x, y) && b < Math.max(x, y);
}

console.log(isBetween(14, 7, 8));
console.log(isBetween(6, 12, 11));
console.log(isBetween(6, 12, 12));
console.log(isBetween(12, 6, 12));
console.log(isBetween(6, 12, 6));

答案 1 :(得分:1)

如果您对它们进行评估,顺序无关紧要

   function between(x, value1, value2) {
  return (x > value1 && x < value2) || (x < value1 && x > value2);
  }
  // ...
 if (between(x, 14, 7)) {
  // something
  }

修改 如果您想在两者之间进行包含或在两者之间进行排除,请记住根据您的需要使用(=&gt;&lt; =)OR(&lt;&gt;)。

示例:

   function between(x, value1, value2) {
  return (x >= value1 && x <= value2) || (x <= value1 && x >= value2);
  }

将为between(7, 14, 7) or between(14, 14, 7)

返回TRUE

,而

   function between(x, value1, value2) {
  return (x > value1 && x < value2) || (x < value1 && x > value2);
  }

将为between(7, 14, 7) or between(14, 14, 7)

返回FALSE

答案 2 :(得分:0)

您还可以采用函数式编程方法:

const compileIsBetween = function (x, y) {
  const min = Math.min(x, y);
  const max = Math.max(x, y);
  return function (num) {
    return num > min && num < max;
  }
}

console.log(compileIsBetween(14, 7)(8));
console.log(compileIsBetween(6, 12)(11));
console.log(compileIsBetween(6, 12)(12));
console.log(compileIsBetween(12, 6)(12));
console.log(compileIsBetween(6, 12)(6));

const isBetween10and20 = compileIsBetween(10, 20);
console.log(isBetween10and20(12))
console.log(isBetween10and20(23))
console.log(isBetween10and20(2))

答案 3 :(得分:0)

您可以使用

x > y ? (b < x && b > y) : (b > x && b < y)

获得您想要的结果。要在if语句中使用它,您可以直接使用方程式或将其提取到方法中并将其替换为if语句。

以下是您提供的链接,以便其他人可以一起查看:)

https://jsfiddle.net/scharpentier0/sj0kegva/