javascript - 为什么我无法打印重叠矩形的 id?

标签 javascript html canvas

我有 2 个字典列表:namedLabels

[{"id":"2","image":"45-14.png","name":"test2","xMax":"4784","xMin":"4767","yMax":"64","yMin":"57"},{"id":"5","image":"45-14.png","name":"test5","xMax":"4896","xMin":"4852","yMax":"64","yMin":"59"}]

otherLabels

[{"id":"1","image":"45-14.png","name":"","xMax":"4760","xMin":"4751","yMax":"64","yMin":"59"},{"id":"3","image":"45-14.png","name":"","xMax":"4830","xMin":"4791","yMax":"67","yMin":"57"},{"id":"4","image":"45-14.png","name":"","xMax":"4845","xMin":"4837","yMax":"64","yMin":"57"},{"id":"6","image":"45-14.png","name":"","xMax":"4914","xMin":"4902","yMax":"67","yMin":"57"}]

我想做的是:如果 namedLabels 是一个正方形重叠 otherLabels 的正方形完全,就像完全覆盖它一样,我想要 id通讯员otherLabels打印的元素(在控制台中)。

我的代码:

for (i = 0; i < namedLabels.length; i++) {
    for (i = 0; i < otherLabels.length; i++) {
      if ((otherLabels[i].xMin<namedLabels[i].xMin) && (otherLabels[i].xMax<namedLabels[i].xMax) &&
          (otherLabels[i].yMin<namedLabels[i].yMin) && (otherLabels[i].yMax<namedLabels[i].yMax)) {
        console.log (otherLabels[i].id)
      }
    }
  }

我在共享片段的第 3 行遇到的错误:

Uncaught TypeError: Cannot read property 'xMin' of undefined
    at HTMLCanvasElement.c.onclick

最佳答案

您在内部和外部循环中使用相同的变量i。将内部 for 循环的变量更改为 j 并且它可以工作:

var namedLabels = [{"id":"2","image":"45-14.png","name":"test2","xMax":"4784","xMin":"4767","yMax":"64","yMin":"57"},{"id":"5","image":"45-14.png","name":"test5","xMax":"4896","xMin":"4852","yMax":"64","yMin":"59"}]
var otherLabels = [{"id":"1","image":"45-14.png","name":"","xMax":"4760","xMin":"4751","yMax":"62","yMin":"50"},{"id":"3","image":"45-14.png","name":"","xMax":"4830","xMin":"4791","yMax":"67","yMin":"57"},{"id":"4","image":"45-14.png","name":"","xMax":"4845","xMin":"4837","yMax":"64","yMin":"57"},{"id":"6","image":"45-14.png","name":"","xMax":"4914","xMin":"4902","yMax":"67","yMin":"57"}]

for (i = 0; i < namedLabels.length; i++) {
    for (j = 0; j < otherLabels.length; j++) {
      if ((otherLabels[j].xMin<namedLabels[i].xMin) && (otherLabels[j].xMax<namedLabels[i].xMax) &&
          (otherLabels[j].yMin<namedLabels[i].yMin) && (otherLabels[j].yMax<namedLabels[i].yMax)) {
        console.log (otherLabels[j].id)
      }
    }
  }

关于javascript - 为什么我无法打印重叠矩形的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467932/

相关文章:

javascript - 范围 slider 不适用于增加 Canvas 的亮度?

javascript - YUI 是否按指定顺序组合多个 JS 文件?

javascript - 如何制作可缩放的粘性页脚

javascript - 无法应用侧边栏小工具的设置

delphi - 如何在 Delphi 中在 FMX Canvas 上画一条线

Javascript:我的工具提示不显示其边框

javascript - 无需 Websocket 即可向浏览器异步推送消息

javascript - 我可以在 chrome 控制台中使用 javascript 测试动态 html View 吗?

javascript - 在动态元素上设置背景图像

html - Piecemaker flash slider 被它的容器夹住了吗?