Javascript测试数组的角(Grid)
Javascript Testing Corners of an Array (Grid)
我正在做这个项目,试图复制Schelling的隔离模型。我有一个函数(下面)正在测试,看看阵列的四个紧邻单元与当前测试的单元相比是否相同、不同或为空。
阵列中的每个单元都有四个可能的测试点。但在边角和边点上,显然你无法测试界外的空间。因此,在函数中,如果它找到一个越界空间,它会递减单元格周围的总数。但是,它不断崩溃,告诉我我有一个未捕获的引用错误:无法读取未定义的属性"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;
}
}
}
通过查看您的代码,只有当i
超出数组的边界时,您才会得到Reference Error: Cannot read property '0' of undefined.
。
我认为问题可能出在代码的这一部分:
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
的比较。
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 一个密码测试程序,如果存在空格,它会提醒用户
- 测试角度解析方法
- Protractor:在Iframe中测试非角度应用程序
- 简单类测试未通过
- 使用Kendo Grid/Datasource的单元测试Angular Controller
- Javascript测试数组的角(Grid)