不要打赌我了.这不是一个重复的问题.
我有一个2D数组,其中包含三个范围:
ranges = [
[1,4],
[6,10],
[15,20]
]
Run Code Online (Sandbox Code Playgroud)
我想检查一个数字是否在其中一个范围内.
例如,7它是真实的[6,10]
我试着这样写:
if ( (num >= ranges[0][0] && num =< ranges[0][1]) ||
(num >= ranges[1][0] && num =< ranges[1][1]) ||
(num >= ranges[2][0] && num =< ranges[2][1])) {
return True;
}
else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
(1)有没有更快的方法而不是写这个笨拙的代码?
(2)如果范围数组的大小未知(不固定),我该如何检查数字?
您可以使用Array#some并检查间隔.
该
some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试.
function checkAgainst(value) {
return ranges.some(function (a) {
return value >= a[0] && value <= a[1];
});
}
var ranges = [[1, 4], [6, 10], [15, 20]];
console.log(checkAgainst(3));
console.log(checkAgainst(5));
console.log(checkAgainst(300));Run Code Online (Sandbox Code Playgroud)