Не выходит отладить функцию
Не выходит отладить функцию
var arr = [[0, 0, 0, 0],
[0, 5, 0, 0],
[0, 0, 5, 0],
[0, 0, 0, 5]];
function szuw(y, x, symbol) {
arr[y][x] = symbol;
var score1;
var score2;
var y1 = y;
var x1 = x;
for(var i = 0; arr[y1][x1]==symbol; i++,x1++,y1++){
score2 = i;
}
for(var i = 1; arr[y][x]==symbol; i++,x--,y--){
score1 = i;
}
return score1 + score2;
}
отладчик выдает Error: TypeError: arr[y1] is undefined |
видимо потому что у вас значения x,y больше 3 или меньше нуля
|
функция не работает даже так
alert(szuw(1,1,5)); если алерт вписать внутрь цикла то он выдает верные значения, например так
for(var i = 0; arr[y1][x1]==symbol; i++,x1++,y1++){
score2 = i;
alert(score2);
}
|
Ребята есть идеи??
|
у Вас в начале по логике должно 5 стоять
[5, 0, 0, 0] |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
arr[y1][x1]==symbol |
но цикл идет же пока верно равенство arr[y1][x1]==symbol ?
|
Цитата:
Вам последнюю строку нужно из одних 0 |
Дело в том, что у вас случается, что при вычислении arr[y1][x1] у arr нет элемента с индексом y1. Тогда arr[y1] возвращает undefined, а всё выражение бросает TypeError, так как undefined не может быть в левой части оператора []. Это можно исправить так:
(y1 in arr) && arr[y1][x1]==symbol или arr[y1]!=undefined && arr[y1][x1]==symbol |
Цитата:
Вот отладил функцию кому не трудно простестируйте
function szuw(y, x, symbol) {
arr[y][x] = symbol;
var score1 = 0;
var score2 = 0;
if((x == 0) && (y == 0)) score1 = 1;
if((y == 0) && (x != 0 && x >= 1)) score1 = 1;
var y1 = y;
var x1 = x;
for(var i = 0; i<=(arr.length-y1-1); i++){
if (arr[y1+i][x1+i] == symbol) {
score2++;
}
}
for(var i = 0; i<=y-1; i++){
if (arr[y-i][x-i] == symbol) {
score1++;
}
}
return score1 + score2 - 1;
}
|
| Часовой пояс GMT +3, время: 03:42. |