javascript - 在'foreach' javascript中迭代数组时'if'不起作用
问题描述
你好,我用 xPos 和 yPos 创建了 3 个数据数组,并用 foreach 开始迭代它们
ctx.drawImage(Images['car1.png'],
element.x,
element.y,
Images['car1.png'].width * SCALE,
Images['car1.png'].height * SCALE);
element.y += SPEED * dt
if (PlayerYpos + Images['car3.png'].height * SCALE <= element.y) {
CountEnd++;
Entity.splice(index, 1)
Entity.push({
x: ~~(Math.random() * (canvas.width - Images['car1.png'].width - Images['car1.png'].width + 1)) + Images['car1.png'].width,
y: ~~(Math.random() * (-700 - (-400) + 1)) + (-400)
});
}
它工作正常,但是当您为创建的数组创建完全相同的代码时,例如 Pit1.png,最后一段代码(应该推送新数据然后绘制)不起作用。我需要以这种方式拍摄 3 张图片。
也许我不知何故犯了一个错误,我需要以完全不同的方式去,但我刚刚开始钻研 js,不明白如何实现更多功能。我只是不明白为什么我不能以这种方式迭代 3 个数组。
如果有人不理解代码段中发生的事情,我会附上一个链接到 hastebin 的完整代码。(pastebin 由于某种原因无法打开)https://hastebin.com/ehitewujix.js
我也将非常感谢代码上的注释。非常感谢。
解决方案
特别是对于您的代码,我认为错误出现在第 162 和 163 行,其中 Entity 应更改为 Pit(Pit.splice 和 Pit.push)。因为,正如我假设您正在 forEach 循环通过 Pit,因此想要修改这些行上的 Pit 数组。
然而,另一方面,我发现使用 map() 而不是 forEach() 更不容易出错/更容易调试。map() 稍微快一点,可以做所有 forEach() 可以做的事情,但也可以返回结果,而 forEach 不能(即使它允许您在其回调函数中写入返回值):https ://morioh.com /p/b2d058745cb8
推荐阅读
- python - Python Paramiko 通过 SSH 将多个文件下载到窗口客户端
- flutter - Flutter ModalBottomSheet 状态(单选按钮)
- node.js - 如何使用 Node.js 创建 SMS API
- python - 生成不包括某些值的随机整数
- angular - 角度材料中的日期格式在一个页面中有效,在另一个页面中无效
- c++ - C/C++ 错误,collect2.exe: error: ld returned 1 exit status
- javascript - 删除重复键并组合 JavaScript 数组中的唯一值
- flutter - 在颤动的文件夹中为每个循环做一个
- node.js - `dns.resolvePtr()` 方法的目的是什么?
- javascript - 将用户输入存储在数组中并显示在屏幕上