Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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_Arrays - Fatal编程技术网

Javascript 创建新数组时出现未捕获类型错误,值已通过警报检查

Javascript 创建新数组时出现未捕获类型错误,值已通过警报检查,javascript,arrays,Javascript,Arrays,我想为给定骑士在给定位置Ij创建一个相对可能的棋盘位置数组,它们是棋盘的坐标。但我不明白为什么会出现这样的错误: “javascript.js:243未捕获类型错误:无法设置未定义的属性'i'” 第二个键是字面意思,因此需要引用。 现在的用法是下面代码的8倍,但我想将代码重新安排为for循环,而不是写出这么多规则 tmpi = i + 2; tmpj = j + 1; if(isInBoard(tmpi,tmpj) && (board[tmpi][tmpj] == "" ||

我想为给定骑士在给定位置
I
j
创建一个相对可能的棋盘位置数组,它们是棋盘的坐标。但我不明白为什么会出现这样的错误:

“javascript.js:243未捕获类型错误:无法设置未定义的属性'i'”

第二个键是字面意思,因此需要引用。 现在的用法是下面代码的8倍,但我想将代码重新安排为for循环,而不是写出这么多规则

tmpi = i + 2;
tmpj = j + 1;

if(isInBoard(tmpi,tmpj) && (board[tmpi][tmpj] == "" || board[tmpi][tmpj] < 100)){

alert('Geen pat door ' + veld(i,j) + ' stuk: ' + getStukNaam(board[i][j]));
                                return false; // paard...nog schaak(mat) test nodig!

                            }



tmpij.length = 0; // empty tmp array....

alert(i + "+" + j); // does work.

//mpij[] = [i + 2,j + 1];

tmpij[0]['i'] = i + 2; // not working
tmpij[0]['j'] = j + 1;
tmpij[1]['i'] = i + 1;
tmpij[1]['j'] = j + 2;
tmpij[2]['i'] = i - 1;
tmpij[2]['j'] = j + 2;
tmpij[3]['i'] = i - 2;
tmpij[3]['j'] = j + 1;
tmpij[4]['i'] = i - 2;
tmpij[4]['j'] = j - 1;
tmpij[5]['i'] = i - 1;
tmpij[5]['j'] = j - 2;
tmpij[6]['i'] = i - 2;
tmpij[6]['j'] = j + 1;
tmpij[7]['i'] = i - 1;
tmpij[7]['j'] = j + 2;

for (counter = 0, len = tmpij.length; counter < len; counter++) {
    alert("testtxt ij: " + tmpij[counter]['i'] + tmpij[counter]['j']);
}

Startvalues 2和2以4和3结束,这确实是需要查找的字段(i+2和j+1)。

在我们讨论语法错误之前,您必须了解,从技术上讲,JavaScript没有多维数组。您可以做的只是将数组存储在数组中的索引位置

因此,如果索引位置
0
中尚未存储数组,则无法在索引位置
[0][0]
创建元素

例如:

var arrayOne=[];
arrayOne[0]=42;
arrayOne[0][0]=“将无法按预期工作”;
console.log(arrayOne[0][0]);
// ********************************************
var arrayTwo=[];
阵列双[0]=[];//必须在第一个维度中存储数组才能有第二个维度
arrayTwo[0][0]=“将按预期工作”;

console.log(arrayTwo[0][0])实际错误指的是未定义的
tmpij[0]
。@Xufox是的,但如果OP用我的答案更正了代码,他将不会尝试读取元素0,他将创建它。不起作用…我将在我的帖子中添加一些额外的解释非常感谢!!它的工作方式我一直在寻找,与文字I和j。今晚我学到了很多。为了方便起见,我现在也使用for循环和push。也许解决方案是一样的,但肯定不是imho的问题。
tmpij[0] = [];
tmpij[0]['i'] = i + 2; 
tmpij[0]['j'] = j + 1;
alert("[0]: " + tmpij[0]['i'] + tmpij[0]['j']);