나는이 프로젝트를 수행하여 Schelling 's Segregation 모델을 재현하려고합니다. 필자는 배열의 4 개의 인접한 인접 셀이 테스트중인 현재 셀과 비교하여 동일하거나 다르거 나 비어 있는지 확인하기 위해 테스트하는 함수 (아래)를 가지고 있습니다.자바 스크립트 테스트 모서리 배열 (그리드)
배열의 모든 셀에 대해 테스트 할 수있는 네 개의 가능한 지점이 있습니다. 그러나 모서리와 측면 지점에서 분명히 범위를 벗어난 테스트 공간은 없습니다. 따라서 함수에서 범위 밖의 공간 중 하나를 찾으면 셀 주위의 총 수를 감소시킵니다. 그러나, 그것은 내가 잡히지 않은 참조 오류가 있음을 알리는 충돌을 계속합니다. 정의되지 않은 '0'속성을 읽을 수 없습니다. 나는 왜 그것이 부서지는 지 말할 수 없다.
이 코드의 마지막 줄은 상품 수 (비슷한 셀)와 그 주위의 총 셀 수 (빈 셀은 계산되지 않음)를 취하고 비슷한 비율을 얻습니다.
어떤 도움을 주시면 왜 충돌이 발생하고 오류가 발생하는지 알려 주시면 감사하겠습니다. 감사! 코드보고에서
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;
}
}
}
코드의 해당 부분에 약간의 오류가있었습니다. 나는 하나의 오류로 인해 배열의 크기를 나에게주는 슬라이더를 가지고 있었다. –