【问题标题】:Cannot seem to add two integers in javascript?似乎无法在 javascript 中添加两个整数?
【发布时间】:2013-04-17 00:12:25
【问题描述】:

我正在使用 HTML5 画布构建 John Conways 的生活游戏。 它有一个 gameOfLife 对象,其中包含一个包含所有单元格及其状态(死/活)的数组。 以下是构建单元的代码:

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

我正在探索检查细胞周围细胞状态的方法。据我了解,一种方法是遍历数组并找到一个坐标与当前检查的单元格周围匹配的单元格。

我正在考虑另辟蹊径。通过从正在评估的单元格的索引中添加和减去 Y(和 X)轴上的单元格数量(+1 和 -1 的微小变化),您应该能够得出任何顶部的索引左、左、左下、右上、右、右下单元格。

我无法测试这个想法,因为它无法让我获得所需的索引:

所以,在我的更新循环中:

//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?!

}

【问题讨论】:

  • 这是什么? cellsXcellsY?
  • 您正在尝试添加icellsY。您正在检查 cellsX 是否为整数,但您从不检查 cellsY
  • console.log(i + grid.cellsY); 显示什么?什么是game.cells
  • @styke 那么它们是字符串,而不是整数。要么将它们设为整数,要么使用 parseInt(num, 10) 解析它们
  • @styke 只有其中一个必须是字符串。如果一个是字符串,另一个会自动转换成字符串并连接起来。

标签: javascript jquery arrays indexing integer


【解决方案1】:

可能有两个原因:

  1. 在 JavaScript 中变量是松散类型的,这就是为什么在之前解析 int 是好的原因 算术运算。

    尝试:

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]);
    
  2. 您正在尝试访问一个数组,您需要检查是否 parseInt(i,10) + parseInt(grid.cellsY,10) 索引存在于您的 数组与否。

【讨论】:

  • 这可能是错字或措辞问题,但我无法理解“在 javascript 中变量默认不是 int”是什么意思。 JavaScript 变量类型是你分配给它的任何东西。
  • 根本不输入 JavaScript 变量。由于+ 用于数字相加和连接字符串,因此最好在执行加法之前将可能的字符串显式转换为数字。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2011-08-05
  • 2011-05-23
相关资源
最近更新 更多