過濾範圍「就地」
重要性:4
撰寫一個函式 filterRangeInPlace(arr, a, b)
,取得一個陣列 arr
,並移除其中所有不在 a
和 b
之間的值。測試為: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]