Javascript 将所有零移到末尾--无法使接头正常工作?
我试图创建一个函数,将所有0移到末尾。我首先使用for循环计算原始数组中有多少个零;还可以使用0的索引来拼接0 然后通过while循环,根据总计数将0推送到数组 我正在努力让拼接工作正常进行。。如果能得到任何意见,我将不胜感激 常量数组=[2,0,0,4,3,1]; 常数moveZeroes=arr=>{ 设零=0; fori=0;i=0{ arr.0; 零-; } console.logarr; };Javascript 将所有零移到末尾--无法使接头正常工作?,javascript,Javascript,我试图创建一个函数,将所有0移到末尾。我首先使用for循环计算原始数组中有多少个零;还可以使用0的索引来拼接0 然后通过while循环,根据总计数将0推送到数组 我正在努力让拼接工作正常进行。。如果能得到任何意见,我将不胜感激 常量数组=[2,0,0,4,3,1]; 常数moveZeroes=arr=>{ 设零=0; fori=0;i=0{ arr.0; 零-; } console.logarr; }; 移动零阵列 因此,修改要迭代的数组是一个常见的监督错误 因此,尝试在for循环的每次迭代后
移动零阵列 因此,修改要迭代的数组是一个常见的监督错误 因此,尝试在for循环的每次迭代后打印数组,您将看到索引在增加,但数组本身的长度在减少,这导致了这种行为
顺便说一句,splice工作正常。因此,修改要迭代的数组是一个常见的监督错误 因此,尝试在for循环的每次迭代后打印数组,您将看到索引在增加,但数组本身的长度在减少,这导致了这种行为 顺便说一句,接头工作正常。您可以使用排序方法 常量arr=[0,0,0,0,1,0,1]; const newArr=arr.sorta,b=>b-a console.logarr您可以使用排序方法 常量arr=[0,0,0,0,1,0,1]; const newArr=arr.sorta,b=>b-a
console.logarr如果您发现不需要就地修改阵列。您可以创建要查找的阵列,如下所示: 常量数组=[0,0,0,0,1]; 常数moveZeroes=arr=>{ 常数0=0; const arraywhithoutzeros=array.filterx=>x!==zeros; const zerosRemovedCount=array.length-arrayWithoutZeros.length; const output=arrayWithoutZeros.concat …ArrayzerosRemovedCount.FillZeros ; console.logoutput; 返回输出; };
移动零阵列 如果您发现不需要在适当的位置修改阵列。您可以创建要查找的阵列,如下所示: 常量数组=[0,0,0,0,1]; 常数moveZeroes=arr=>{ 常数0=0; const arraywhithoutzeros=array.filterx=>x!==zeros; const zerosRemovedCount=array.length-arrayWithoutZeros.length; const output=arrayWithoutZeros.concat …ArrayzerosRemovedCount.FillZeros ; console.logoutput; 返回输出; };
移动零阵列 每次拼接阵列时,只需减小i的值
function moveZero(array){
var numberofZeros = 0;
for(var i=0; i< array.length; i++){
if(array[i] == 0){
array.splice(i,1);
numberofZeros++;
i--;
}
}
while(numberofZeros > 0){
array.push(0);
numberofZeros--;
}
}
为了优化这一点,我认为您可以使用Vaibhav回答的排序方法,您只需要在每次拼接阵列时减小I的值
function moveZero(array){
var numberofZeros = 0;
for(var i=0; i< array.length; i++){
if(array[i] == 0){
array.splice(i,1);
numberofZeros++;
i--;
}
}
while(numberofZeros > 0){
array.push(0);
numberofZeros--;
}
}
为了优化这一点,我认为您可以使用Vaibhav回答的排序方法,您可以在一次扫描中完成。拼接的成本更高,因为拼接后必须移动所有元素并调整阵列大小,而且每删除一个零,就必须移动一个元素。对于数组中的每个元素,此代码只需要1次写入操作
function moveZero(array){
var numberofZeros = 0;
for(var i=0; i< array.length; i++){
if(array[i] == 0){
array.splice(i,1);
numberofZeros++;
i--;
}
}
while(numberofZeros > 0){
array.push(0);
numberofZeros--;
}
}
常量数组=[1,0,2,0,3,0,4,0,5,0,6,0];
常量moveZeroes=数组=>{
设writeIndex=0;
对于let readIndex=0;readIndexfunction moveZero(array){
var numberofZeros = 0;
for(var i=0; i< array.length; i++){
if(array[i] == 0){
array.splice(i,1);
numberofZeros++;
i--;
}
}
while(numberofZeros > 0){
array.push(0);
numberofZeros--;
}
}
常量数组=[1,0,2,0,3,0,4,0,5,0,6,0];
常量moveZeroes=数组=>{
设writeIndex=0;
对于let readIndex=0;readIndex