我将一些点作为点映射到画布上,我希望将重复的点渲染为更大的点。
我需要检查之前是否已经映射过坐标,所以我想在我去的时候将坐标存储在数组中。
这就是我所拥有的。我不确定.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");
}
});
答案 0 :(得分:2)
据我所知,inArray
仅测试简单值(即不是数组或对象)。
您可以改为使用filter
:Fiddle
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如何测试相等性有关 - 两个相同长度且具有相同顺序的相同元素的数组仍然不被认为是“严格相等”(===
)。