返回課程

過濾範圍「就地」

重要性:4

撰寫一個函式 filterRangeInPlace(arr, a, b),取得一個陣列 arr,並移除其中所有不在 ab 之間的值。測試為:a ≤ arr[i] ≤ b

此函數應僅修改陣列。它不應傳回任何東西。

例如

let arr = [5, 3, 8, 1];

filterRangeInPlace(arr, 1, 4); // removed the numbers except from 1 to 4

alert( arr ); // [3, 1]

開啟包含測試的沙盒。

function filterRangeInPlace(arr, a, b) {

  for (let i = 0; i < arr.length; i++) {
    let val = arr[i];

    // remove if outside of the interval
    if (val < a || val > b) {
      arr.splice(i, 1);
      i--;
    }
  }

}

let arr = [5, 3, 8, 1];

filterRangeInPlace(arr, 1, 4); // removed the numbers except from 1 to 4

alert( arr ); // [3, 1]

在沙盒中開啟包含測試的解決方案。