如何通过填充孔来重新索引数组?

时间:2016-08-28 22:06:09

标签: javascript

假设我有一个数组(从上到下绘图):

0 3 0 4 0

其中0表示"洞",我想像这样重新索引:

0 0 0 3 4

意味着非零细胞"跌倒"到底部,就像俄罗斯方块游戏一样。

如何仅使用for循环并且不使用shift / unshift / pop /任何其他数组方法来实现此目的?

高度已知并且是静态的。

由于

1 个答案:

答案 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;
&#13;
&#13;