我在一个HTML5游戏中有一个包含粒子(火,血,烟等)的数组。所有粒子都有过期/寿命。我每帧以60fps创建多达100个粒子,因此我希望尽可能保持这个数组干净,以便可以高效地循环遍历它。
我听说使用“splice”而不是“delete”从数组中删除元素更好。对我来说,这很有道理,因为我不想循环遍历留下空白键的数组。
然而,我测试了一下,如果我用“delete”而不是拼接来删除过期的粒子,则帧率更高,更稳定。缺点是游戏运行时间越长,我的粒子数组就会变得越长。
这个问题有更好的解决方案吗?
我听说使用“splice”而不是“delete”从数组中删除元素更好。对我来说,这很有道理,因为我不想循环遍历留下空白键的数组。
然而,我测试了一下,如果我用“delete”而不是拼接来删除过期的粒子,则帧率更高,更稳定。缺点是游戏运行时间越长,我的粒子数组就会变得越长。
这个问题有更好的解决方案吗?
slice
更好,以避免迭代未定义的索引,而在其他情况下,这些无关紧要,或者您可以在迭代之前运行Array.filter
并删除未定义的索引,速度取决于具体情况。 - adeneo