假设我有一个数组(从上到下绘制):
0 3 0 4 0
其中 0 代表一个“洞”,我想像这样重新索引它:
0 0 0 3 4
意味着非零单元格“落”到底部,就像俄罗斯方 block 游戏一样。
如何仅使用 for 循环而不使用 shift/unshift/pop/任何其他数组方法来实现此目的?
高度已知且是静态的。
谢谢
最佳答案
只需向后迭代,跟踪应移动下一个非零值的索引。
var arr = [0, 3, 0, 4, 0];
var idx = arr.length;
for(var i=idx-1; i>=0; --i)
if(arr[i] !== 0)
arr[--idx] = arr[i];
for(var i=0; i<idx; ++i)
arr[i] = 0;
console.log(arr);
关于javascript - 如何通过填充空洞来重新索引数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196231/