javascript - 使用 ES6 功能移动数组中的零

标签 javascript ecmascript-6

我是 ES6 的新手,试图制作一个函数,将数组中的所有零移动到数组的最后一个位置,同时保留数组的原始顺序 例如。 [1,0,0,0,2,3,4,5] => [1,2,3,4,5,0,0,0]

 function moveZeros (arr) {
  let zeroArr = [];
    for(let i = 0;i < arr.length;i++) {
    if (arr[i] == 0) {
     zeroArr.push(arr[i]);
     arr.splice(i, 1);
    }
  }
  arr.push(...zeroArr);
  return arr;
} 

这是我的代码,它运行良好,但我认为在使用一些 ES6 功能时可以更短。有人可以提供更好的解决方案

最佳答案

使用 filter 函数和 spread 运算符可以很容易地解决这个问题,.

const moveZeros = arr => {
  const z = arr.filter(a => a === 0); // get all zeroes
  const nZ = arr.filter(a => a !== 0); // get all non zeroes
  return [...nZ, ...z]; // put the zeroes on the last position
};

关于javascript - 使用 ES6 功能移动数组中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631233/

相关文章:

javascript - 一旦我更改值如何重新加载助手

javascript - 获取视口(viewport)中元素位置的百分比

javascript - SpyOn 单独导出 ES6 函数

javascript - ES6 : self-import vs ordering exports for referencing

javascript - 本地文件中的 ES6 模块 - 服务器使用非 JavaScript MIME 类型进行响应

javascript - 谷歌地图标记点击事件未触发

c# - 在 RadWindows 中选择一个 RadGrid 行(客户端)

javascript - React/Redux 改变网页语言

reactjs - 当我设置 observable 时,mobx-react 观察者不会触发

javascript - 如何在 JavaScript 中高效地进行数组比较