コードカタ#14


質問する


指定した数値配列で、0を配列の最後に移動します.元の数字の順番を変えないでください.
(新しいアレイは作成しないでください.)
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

に答える

let nums = [0,1,0,3,12];
const moveZeroes = nums => {
  for(let i = nums.length-1; i >= 0; i--){
    if(nums[i]===0){
      nums.push(nums.splice(i, 1)[0]); 
      console.log(nums)//   [ 0, 1, 3, 12, 0 ],[ 1, 3, 12, 0, 0 ]
    }
  }
  return nums;   //   [ 1, 3, 12, 0, 0 ]
};

解法

  • 後からループ
  • 繰り返し文を返すnums[i]0の場合条件文を作成
  • 上記条件が満たされた場合、numsspliceメソッドで0を検索して切り取り、pushメソッドの後ろに置く
  • numsを返します.
  • 振り返る


    しばらくはCode Kataの中の問題を解決できなかったが、今回の問題はまだ解決できるようだ.前からではなく後ろから回っていたのですが、2つのテストのうち1つだけ合格して、後ろから回って、結果はすべて合格しましたが、今まで原因が見つからず、問題を解くだけだと感じています.