私は同じ数字が好きではありません.


🤔 質問する


プログラマー-私は同じ数字が好きではありません。
配列arr.アレイarrの各要素は、0から9の数字で構成されています.この場合、アレイarrは連続して表示される数字を1つだけ保持し、すべて削除しようとします.ただし、削除後に残数を返す場合は、アレイarr内の要素の順序を維持する必要があります.たとえば、arr = [1, 1, 3, 3, 0, 1, 1]であれば、[1, 3, 0, 1]に戻ります.arr = [4, 4, 4, 3, 3]であれば、[4, 3]に戻ります.
配列arrから連続して現れる数字を削除し、残りの数を返すsolution関数を完了してください.

¥2,000円制限

  • アレイarrサイズ:1000000以下の自然数
  • アレイarrの要素サイズ:0以上9以下の整数
  • 💡 に近づく

    arrに配列されたインデックスii + 1を簡単に比較する必要がある.

    🧑🏻‍💻 コード#コード#

    solution 1for문solution 2からfilter()の方法に変更した.配列高次関数map()filter()等は新たな配列を返すので、const answer = [];のプロセスを省略することができる.
    // solution 1
    function solution(arr) {
      const len = arr.length;
      const answer = [];
      for (let i = 0; i < len; i++) {
        arr[i] !== arr[i + 1] && answer.push(arr[i]);
      }
      return answer;
    }
    
    // solution 2
    function solution(arr) {
      const answer = arr.filter((v, i, array) => v !== array[i + 1]);
      return answer;
    }
    
    solution([1, 1, 3, 3, 0, 1, 1]); // [1,3,0,1]

    📝 リファレンス


    MDN - Array.prototype.map()
    MDN - Array.prototype.filter()