Javascript 编写一个算法,该算法接受一个数组并将所有零移到末尾

Javascript 编写一个算法,该算法接受一个数组并将所有零移到末尾,javascript,Javascript,写一个算法,取一个数组并将所有零移到末尾,保留其他元素的顺序 例如: moveZeros([false,1,0,1,2,0,1,3,"a"]) // returns[false,1,1,2,1,3,"a",0,0] 我的代码: var moveZeros = function (arr) { var zeros = []; var others = []; var res; var arrayLength = arr.length; for (var i = 0; i < arra

写一个算法,取一个数组并将所有零移到末尾,保留其他元素的顺序

例如:

moveZeros([false,1,0,1,2,0,1,3,"a"]) // returns[false,1,1,2,1,3,"a",0,0]
我的代码:

var moveZeros = function (arr) {

var zeros = []; 
var others = [];
var res;

var arrayLength = arr.length;
for (var i = 0; i < arrayLength; i++) {
if   (arr[i] ==  0) {
 zeros.push(arr[i]);
 } else {
      others.push(arr[i]);
 }
}
var res = others.concat( zeros );

return res;


}
预期结果与我所取得的非常接近(见上文)。我不明白为什么我在另一个地方有
false

简单地试试这个

var arr=[false,1,0,1,2,0,1,3,“a”];
sort(函数(a,b){if(a==0){return 1}});

document.body.innerHTML+=JSON.stringify(arr)如果值为0,请使用===运算符进行比较:

if (arr[i] ===  0) {
    zeros.push(arr[i]);
} else {
   others.push(arr[i]);
}

在这种情况下,尝试使用正常的
for循环
拼接
,以完成您的工作

var arr=[false,1,0,1,2,0,1,3,“a”];
对于(变量i=arr.length;i>0;i--){
if(arr[i]==0){arr.push(arr.splice(i,1.pop());}
}
控制台日志(arr)//[假,1,1,2,1,3,“a”,0,0]
document.body.innerHTML+=JSON.stringify(arr)使用和。
函数移动零(a){
var i=a.长度-1;
而(我--){
如果(a[i]==0){
a、 推(a.拼接(i,1)[0]);
}
}
返回a;
};
var数组=[false,1,0,1,2,0,1,3,“a”];

write(“”+JSON.stringify(moveZeros(array),0,4)+“”)下面的代码段应该可以工作,请尝试,null的原因是arr的长度从零开始计数,因此在使用
var titleCase=function(title)时{
var-arr=[];
对于(i=0;i
您可以使用
filter()
方法来实现您的目标。使用箭头符号可以缩短代码。例如:
arr=>arr==0
是匿名筛选函数
function(arr){return arr==0;}


[]和0是相同的值,但类型不同。==匹配值,==匹配值和类型。([]==0)>True,([]==0)>false,您能给代码添加解释吗?
if (arr[i] ===  0) {
    zeros.push(arr[i]);
} else {
   others.push(arr[i]);
}
var titleCase = function(title) {
var arr = [];
for (i = 0; i < title.length ; i++) {
    if (title[i] !== 0 ) {
        arr.push(title[i]);
    }
}
for (i = 0 ; i < title.length ; i++) {
    if (title[i] == 0 ) {
        arr.push(title[i]);
    }
}
return  arr;
}
var moveZeros = function (arr) {
    const zeros = arr.filter (arr => arr === 0);
    const others = arr.filter (arr => arr !== 0);
    return others.concat(zeros);
}