编写一个算法,接受一个数组并将所有零移动到末尾,同时保留其他元素的顺序。
例如:
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;
}
我得到以下结果:
Expected: ["a","b",null,"c","d",1,false,1,3,[],1,9,{},9,0,0,0,0,0,0,0,0,0,0],
Instead got: ["a","b",null,"c","d",1,1,3,1,9,{},9,0,0,0,false,0,0,[],0,0,0,0,0]
预期结果与我取得的结果非常接近(见上文)。我不明白为什么我在不同的地方有 false
?
最佳答案
简单地试试这个
var arr = [false,1,0,1,2,0,1,3,"a"];
arr.sort(function(a,b){if (a===0){return 1}});
document.body.innerHTML += JSON.stringify(arr);
关于javascript - 编写一个算法,接受一个数组并将所有的零移动到末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940262/