我有两个数组,需要检查其中任何重复的范围,如何实现?
let arrayfrom = ['1', '6.1', '10', '31','6.2',3];
let arrayto = ['2', '9.9', '30', '401','7',5];我们如何测试重复范围?预期结果如下:
1-2 -valid
6.1 - 9.9 -valid
10 - 30-valid
31 - 401 -valid
6.2 - 7 -invalid (between range 6.1 - 9.9)
3-5 - valid 帮我找到这个解决方案
发布于 2022-08-03 12:09:29
一两圈就行了。我们需要把所有的配对和其他的比较。
let arrayFrom = ['1', '6.1', '10', '31', '6.2', 3];
let arrayTo = ['2', '9.9', '30', '401', '7', 5];
function is_pair_included(a, in_b) {
return (a[0] > in_b[0] && a[1] < in_b[1])
}
var to_remove = [];
for (var i = 0; i < arrayFrom.length - 1; i++) {
for (var j = i + 1; j < arrayFrom.length; j++) {
var pair1 = [+arrayFrom[i], +arrayTo[i]];
var pair2 = [+arrayFrom[j], +arrayTo[j]];
if (is_pair_included(pair1, pair2)) {
to_remove.push(i);
}
if (is_pair_included(pair2, pair1)) {
to_remove.push(j);
}
}
}
to_remove.forEach(function(i) {
var pair1 = [+arrayFrom[i], +arrayTo[i]];
console.log("" + pair1, "invalid");
})
https://stackoverflow.com/questions/73221320
复制相似问题