2013-04-23 2 views
5

Im building Джон Конвейс игра жизни с холстом HTML5. У этого есть объект gameOfLife, который содержит массив со всеми ячейками и их состояниями (мертвыми/живыми). Вот код, который строит ячейку:Кажется, не может добавить два целых числа в javascript?

function cell(x,y){ 
    this.x = x; 
    this.y = y; 
    this.isAlive = false; 
} 

Я изучает способы проверки клетки, окружающие клетки состояния. Насколько я понимаю, одним из способов является итерация по массиву и поиск ячейки с координатами, которые соответствуют текущей ячейке.

Я думал о другом. Добавляя и вычитая количество ячеек (с небольшими изменениями +1 и -1) на оси Y (и X) из индекса оцениваемой ячейки, вы должны иметь возможность отображать индекс любой вершины левый, левый, нижний левый, верхний правый, правый, нижний правый.

Я не был в состоянии проверить эту идею, так как она не позволяет мне получить желаемый индекс:

Таким образом, в моем цикле обновления:

//I know that there is a cell at the index of exampleIndex + cellsY 
exampleIndex = 200; 

game.getLivingNeighbours(exampleIndex); 


function getLivingNeighbours(i){ 

    console.log(i) //Logs an integer 
    console.log(grid.cellsY) //Logs an integer 
    console.log(game.cells[i + grid.cellsY]); //Undefined?! 

} 
+0

что это? 'cellsX' или' cellsY'? – Joseph

+0

Вы пытаетесь добавить 'i' и' cellsY'. Вы проверяете, является ли 'cellsX' целым числом, но вы никогда не проверяете' cellsY' –

+0

cellsY, очень жаль. – styke

ответ

5

Там может быть две причины:

  1. в переменных JavaScript являются рыхлого типа, поэтому его хорошо разобрать int перед тем арифметическая операция.

    попробовать:

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]); 
    
  2. Вы пытаетесь получить доступ к массиву, вам нужно проверить, существует ли parseInt(i,10) + parseInt(grid.cellsY,10) индекс в вашем массиве или нет.

+1

Это, вероятно, опечатка или формулировка вопроса, но я не могу понять, что вы имеете в виду: «В переменной javascript по умолчанию нет int». Тип переменной JavaScript - это то, что вы ему назначили. –

+2

Переменные JavaScript не набираются вообще.И так как '+' используется как для добавления чисел, так и для конкатенации строк, рекомендуется явно преобразовать возможные строки в числа перед выполнением добавления. – Blazemonger

+0

спасибо друзьям ... Обновлено сообщение :) –

Смежные вопросы