javascript - 如何通过填充空洞来重新索引数组?

标签 javascript

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

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/

相关文章:

javascript - 如何在 Laravel webpack.mix.js 中添加全局函数?

javascript - jQuery Accordion - 访问时打开的第一个选项卡

javascript - 列出过去 6 个月的月份名称和年份

javascript - Click() 和 Toggle() - 错误

javascript - window.top.document.body.scrollTop 在 Chrome 或 FireFox 中不工作

javascript - 如何知道是否有人通过 javascript 登录?

Javascript使用map从一维数组创建二维数组

javascript - 从javascript中的对象数组中删除重复值

javascript - 条件 scss 或覆盖变量

javascript - 将用户重定向到 React 中的不同路径