将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)

将0移到最后,在原数组操作,并且不能改变源数据顺序。

示例:输入:[2,0,0,1,0,3],  结果:[2,1,3,0,0,0]

问题分析:注意是在原数组上操作,不要进行任何数组拷贝操作,还要保证操作后的源数据顺序不变。

直接上JS代码:

//ES6箭头函数写法 const moveZero = (arr) => { let y = 0;//定义y用于控制循环结束 for (let i = 0; y < arr.length; y++) { if (arr[i] === 0) arr.push(arr.splice(i, 1)[0]);//循环到是0的位置就删除该元素0并且在arr末尾push进这个元素0,由于splice删除了该位置元素,所以i不用+1,下次循环仍然检查i位置的元素 else i++;//循环到不是0的位置就继续往后循环 } return arr;//返回操作后的原数组 }; //运行如下: moveZero([2,0,0,1,0,3]);//[2,1,3,0,0,0]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysszj.html