javascript - 检查范围重叠

标签 javascript

我正在尝试实现一个函数,当给定两个表示线的对象时,返回它们是否重叠。

这是它的视觉效果。

示例 1:

checkOverlap({start: 0, end: 10}, {start: 8, end: 15})

从视觉上看,应该是:

0--------10
     8-------15
       ^ overlap

返回 true

示例 2:

checkOverlap({start: 12, end: 15}, {start: 0, end: 10})

从视觉上看,应该是:

             12-------15   
0--------10

              no overlap

返回 false

这是我的函数,它适用于一些但不是全部:

function checkOverlap(lineA, lineB) {
    var result;
    for(var a in lineA) {
        for(var b in lineB) {
            if(a.end > b.start) {
                result = true;
            } else {
                result = true;
            }
        }
    }
    return result;
}

最佳答案

Nina Scholz 的回答是行不通的,例如。 a = {开始:1,结束:2},b = {开始:0,结束:10}。

如果行 {start: 0, end: 10} 和 {start: 10, end: 15} 算作重叠:

 function checkOverlap(lineA, lineB) {
        return lineA.start >= lineB.start && lineA.start <= lineB.end || 
               lineA.end >= lineB.start && lineA.end <= lineB.end ||
               lineB.start >= lineA.start && lineB.start <= lineA.end || 
               lineB.end >= lineA.start && lineB.end <= lineA.end;
    }

如果不是:

 function checkOverlap(lineA, lineB) {
        return lineA.start > lineB.start && lineA.start < lineB.end || 
               lineA.end > lineB.start && lineA.end < lineB.end ||
               lineB.start > lineA.start && lineB.start < lineA.end || 
               lineB.end > lineA.start && lineB.end < lineA.end;
    }

关于javascript - 检查范围重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567740/

相关文章:

Javascript 更新导致悲伤

javascript - 如何停止递归和/或使用更新的变量重新启动当前函数

javascript - JSON.Parse 出现问题 - 控制台在 DOCTYPE 中显示错误

javascript - 如何在 bing map (win8) 中使用来自 www 的图像

javascript - 如何用数字取得进度条

javascript - "IF textTrue ELSE textFalse"的正则表达式

javascript - 点击关闭其他下拉菜单

javascript - 在 Google Apps 脚本中获取幻灯片的标题

javascript - 单击其他 div 标签时覆盖运行时的单击绑定(bind)

javascript - 将鼠标悬停在桌面上打开菜单,单击移动设备