Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript测试数组的角点(网格)_Javascript_Jquery_Arrays_Multidimensional Array - Fatal编程技术网

Javascript测试数组的角点(网格)

Javascript测试数组的角点(网格),javascript,jquery,arrays,multidimensional-array,Javascript,Jquery,Arrays,Multidimensional Array,我正在做这个项目,试图复制谢林的隔离模式。我在下面有一个函数,它正在测试阵列的四个相邻单元与当前被测试单元相比是否相同、不同或为空 阵列中的每个单元都有四个可能的测试点。但在拐角和侧边点上,显然不能测试超出边界的空间。所以在函数中,如果它找到一个越界空间,它会减少单元格周围的总数。但是,它不断崩溃,告诉我有一个未捕获的引用错误:无法读取未定义的属性“0”。我不知道它为什么会崩溃 这段代码的最后一行是goodsSimular单元格的数量,它周围的单元格总数空单元格不计算,得到一个相似的百分比 如果

我正在做这个项目,试图复制谢林的隔离模式。我在下面有一个函数,它正在测试阵列的四个相邻单元与当前被测试单元相比是否相同、不同或为空

阵列中的每个单元都有四个可能的测试点。但在拐角和侧边点上,显然不能测试超出边界的空间。所以在函数中,如果它找到一个越界空间,它会减少单元格周围的总数。但是,它不断崩溃,告诉我有一个未捕获的引用错误:无法读取未定义的属性“0”。我不知道它为什么会崩溃

这段代码的最后一行是goodsSimular单元格的数量,它周围的单元格总数空单元格不计算,得到一个相似的百分比

如果有人能帮我告诉我为什么它可能会崩溃并给我一个错误,我们将不胜感激?谢谢

model.Test = function( i, j )
{
var numberToTest= 4;
var goods= 0;

if ((i - 1) >= 0) 
{
    if (model.BoardArray[i-1][j] != "E")
    {
        if (model.BoardArray[i][j] == model.BoardArray[i-1][j])
        {
            goods++;
        }
    }
    else
    {
        numberToTest--;
    }
}
else
{
    numberToTest--;
}


if((i + 1) < $("#BoardSizeValue").val()) 
{
    if (model.BoardArray[i+1][j] != "E")
    {   
        if (model.BoardArray[i][j] == model.BoardArray[i+1][j])
        {
            goods++;
        }
    }
    else
    {
        numberToTest--;
    }
}
else
{
    numberToTest--;
}


if ((j - 1) >= 0) 
{
    if (model.BoardArray[i][j-1] != "E")
    {
        if (model.BoardArray[i][j] == model.BoardArray[i][j-1])
        {
        goods++;
        }
    }
    else
    {
        numberToTest--;
    }
}
else
{
    numberToTest--;
}


if ((j + 1) < $("#BoardSizeValue").val()) 
{
    if (model.BoardArray[i][j+1] != "E")
    {   
        if (model.BoardArray[i][j] == model.BoardArray[i][j+1])
        {
            goods++;
        }
    }
    else
    {
        numberToTest--;
    }
}
else
{
    numberToTest--;
}


var similar = $("#SimilarSlider").val()/100;
if (numberToTest == 0)
{
    return false;
}
else
{
    var needed = goods/numberToTest;

    if (needed >= similar)
    {
        return false;
    }
    else
    {
        return true;
    }
}
}

查看代码时,您只会得到一个引用错误:无法读取未定义的属性“0”。如果我在数组的边界之外

我认为问题可能出在代码的这一部分:

if ((i - 1) >= 0) {
    if (model.BoardArray[i-1][j] != "E") {
        if (model.BoardArray[i][j] == model.BoardArray[i-1][j]) {
如果i=$BoardSizeValue.val和$BoardSizeValue.val是数组大小的基于一的索引,则[i-1]可以,但[i]不行。因此,请尝试将代码调整为:

if ((i - 1) >= 0 && i < $("#BoardSizeValue").val()) {
    if (model.BoardArray[i-1][j] != "E") {
        if (model.BoardArray[i][j] == model.BoardArray[i-1][j]) {

这也适用于j比较。

代码的这一部分有一些轻微错误。我有一个滑块,它给我的数组大小有一个off-by-one错误