在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
答案 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)
,而
function between(x, value1, value2) {
return (x > value1 && x < value2) || (x < value1 && x > value2);
}
将为between(7, 14, 7) or between(14, 14, 7)
答案 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语句。
以下是您提供的链接,以便其他人可以一起查看:)