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']);