Javascript-如果数字对不';不存在

Javascript-如果数字对不';不存在,javascript,jquery,arrays,search,Javascript,Jquery,Arrays,Search,编辑:如果你读了马特·布莱恩特的答案,你会发现它应该有效,但他使用indexOf()方法,而该方法不适用于IE 8或更高版本,我需要它来处理IE 8。我尝试将此作为indexOf()方法的替代方法,但它不起作用 var tester = -1; for (var test=0; test<xposition.length; test++) { if (x == xposition[0]) { tseter = x; } } 基本上,它会生成一个介于最小值和

编辑:如果你读了马特·布莱恩特的答案,你会发现它应该有效,但他使用indexOf()方法,而该方法不适用于IE 8或更高版本,我需要它来处理IE 8。我尝试将此作为indexOf()方法的替代方法,但它不起作用

var tester = -1;
for (var test=0; test<xposition.length; test++) {
    if (x == xposition[0]) {
        tseter = x;
    }
}
基本上,它会生成一个介于最小值和最大值之间的数字

还有,当我试着

alert(xposition);
alert(yposition);

它是空的。

问题是您正在将
x
y
添加到循环外部的数组中。对此的修复(加上删除不必要的jQuery)是:


这种方法的一个主要问题是,您必须考虑存在多个具有相同x或y值的唯一对的情况

x=[1,1,1],y=[1,2,3]

请注意,Array.indexOf仅在数组中找到给定元素时返回第一个索引。因此,您必须从找到匹配项的索引开始递归运行它

生成唯一整数对的简单方法可以在没有jquery的情况下完成:


我假设顺序确实重要,因此
x=4,y=3&x=3,y=4
将被视为两个唯一对。

您能告诉我们您的
getRandom()
函数的功能吗?为什么x和y的参数不同?你是否只需要输入轴的比例,然后做一个
Math.random
?只是确定一下。
函数randomPairs(){return[4,4];}
。直接来自
jQuery.inArray(x,xposition)
返回元素的索引,如果存在,那么为什么要在这个函数索引中搜索?@aug哎哟,我刚刚编辑了我的帖子,展示了getRandom()的功能。这是一个笑话,伙计。。。够讽刺的,需要解释;)嗯,“如果(位置>-1)”做什么?如果在数组中找不到x,xposition.indexOf(x)是否返回负数?如果
x
不在数组中,
indexOf(x)
返回
-1
。否则它将返回一个索引,该索引必须大于或等于0.hm。您是否尝试了计算机上提供的代码?它对您有用吗?出于某种原因,对于我来说,代码在到达“var location=xposition.indexOf(x);”时停止工作。解决方法是使用jQuery方法。我会更新的。
function getRandom(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
}
alert(xposition);
alert(yposition);
function randomPairs() {
    var xposition = []; //array which holds all x coordinates
    var yposition = []; //array which holds all y coordinates
    for (var i=0; i<5; i++) { //do everything below 5 times (generate 5 pairs)

        var x = getRandom(1,7); //generate new x point
        var y = getRandom(2,7); //generate new y point

        var location = xposition.indexOf(x);
        if (location > -1) { //if newly generated x point is already in the xposition array (if it was    already previously generated
            if (y == yposition[location]) { //if the newly generated y points equals the same y point in  the same location as x, except in the yposition array
                while ( y == yposition[location]) {
                    y = getRandom(2, 7); //change y
                }
            }
        }
        xposition.push(x); //put x into the array
        yposition.push(y); //put y into the array
    }
}
var location = xposition.indexOf(x);
var location = jQuery.inArray(x, xposition);