我正在嘗試撰寫一個程式來移動陣列末尾的所有零并保留其他元素的原始順序。
這是我的代碼:-
var moveZeros = function (arr) {
// TODO: Program me
var k=0;
for (var i=0;i<=arr.length-1;i ){
var s=arr[i];
if (s===0){
arr.splice(i,1);
k
}
}
for (var j=0;j<=k-1;j ){
arr.push(0);
}
return arr
}
但是當零像 [1,0,0,1] 這樣彼此相鄰時,它不起作用。
我不明白為什么。
有人能告訴嗎?
并且還請解釋為什么 k-1 不是 k 我通過觀察輸出寫了 k-1。請不要告訴原始問題的答案我只想用我的代碼解決問題。:)
uj5u.com熱心網友回復:
問題在于,在每個回圈中,您將i變數增加一。意思是,您轉到下一個索引。但是,如果您在行中有 2 個或多個零,并且洗掉了第一個零,則不應更改i為i 1,因為i已經指向陣列中的一個新值(為零):)
var moveZeros = function (arr) {
// TODO: Program me
var k = 0;
for (var i = 0; i <= arr.length - 1;) {
var s = arr[i];
if (s === 0) {
arr.splice(i, 1);
k ;
} else {
i ;
}
}
for (var j = 0; j <= k - 1; j ) {
arr.push(0);
}
return arr;
};
console.log(moveZeros([1,0,0,2]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361803.html
標籤:javascript 数组 调试
