动画中的Javascript数组拼接

标签 javascript arrays

我目前正在 Canvas 中开发 map 生成器。

这是代码工作代码:http://jsfiddle.net/RtPmm/

以及提出问题的部分:

MapBuilder = function(){
...
this.checkPath = function(){
...
(logic condition ...)    {
  var i = Game.builders.indexOf(this);
  Game.builders.splice(i,1); /!\
}

在渲染函数中:

for (var i = 0, len = Game.builders.length; i < len; i++) {
  Game.builders[i].checkPath();
}

我的问题是,当我的 MapBuilder 对象应该从数组中删除时,animateloop 函数在迭代 Game.builders 数组时仍然找到已删除的索引。

我真的找不到这个..

感谢您花时间留下答案(或评论)

最佳答案

嗯,这是因为您正在循环,直到达到数组的初始长度,但是当您删除项目并且项目发生移动时,长度会发生变化。

这个问题有几种解决方案,比如向后循环,或者类似:

var builders = Game.builders,
    builder;
for (var i = 0, len = builders.length; i < len; i++) {
   (builder = builders[i]).checkPath();
   if (builders[i] !== builder) {
       //builder was removed, fix the loop
       --i; --len;
   }
}

关于动画中的Javascript数组拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675103/

相关文章:

javascript - 检查数组中是否每个 id 都有一个现有对象

javascript - 如何让 this 关键字在我创建的对象字面量中起作用?

c++ - char 数组上的可变参数

php - 配置类 - 从函数字符串参数获取配置数组

javascript - 在下拉列表中显示数组

javascript - Coffeescript 数组解构忽略某些值

javascript - 在ajax post请求之前加载两个文件

javascript - 如何以水平方式显示最小值和最大值?

javascript - ExtJS:同步 ComboBox 和 TagField

Python/Numpy 每第 n 行切片一个数组