假设我有一个数组(从上到下绘图):
0 3 0 4 0
其中0表示"洞",我想像这样重新索引:
0 0 0 3 4
意味着非零细胞"跌倒"到底部,就像俄罗斯方块游戏一样。
如何仅使用for循环并且不使用shift / unshift / pop /任何其他数组方法来实现此目的?
高度已知并且是静态的。
由于
答案 0 :(得分:1)
向后迭代,跟踪你应该移动下一个非零值的索引。
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);
&#13;