使用inArray()检查坐标是否在jQuery数组中

时间:2013-01-15 20:55:27

标签: jquery arrays coordinates

我将一些点作为点映射到画布上,我希望将重复的点渲染为更大的点。

我需要检查之前是否已经映射过坐标,所以我想在我去的时候将坐标存储在数组中。

这就是我所拥有的。我不确定.inArray系列。如何检查坐标是否已在数组中?

$(function() {
  var arr = [];
  arr.push([0,1]);
  arr.push([2,1]);
  arr.push([3,1]);
  arr.push([4,1]);
  arr.push([5,1]);

  if(jQuery.inArray("2,1",arr)) {
    alert("not there");
  }

});

HERE'S A SIMPLIFIED FIDDLE.

2 个答案:

答案 0 :(得分:2)

据我所知,inArray仅测试简单值(即不是数组或对象)。 您可以改为使用filterFiddle

 var arr = [];
  arr.push([0,1]);
  arr.push([2,1]);
  arr.push([3,1]);
  arr.push([4,1]);
  arr.push([5,1]);

x=2;
y=1;
    var filtered = $(arr).filter(function(){
        thisX = this[0];
        thisY= this[1];
        return x==thisX && y==thisY; 
    });
    if(filtered.length > 0){
       alert("yes"); 
    }
    else {
      alert("no");
    }

要测试范围变化,返回条件如下:

return (x>thisX-0.5 && x<thisX+0.5) && (y>thisY-0.5 && y<thisY+0.5);

答案 1 :(得分:0)

调试你的小提琴之后,似乎问题与JavaScript如何测试相等性有关 - 两个相同长度且具有相同顺序的相同元素的数组仍然不被认为是“严格相等”(=== )。

要解决此问题,您必须develop your own function for testing equality