جداسازی توسط حدود «در محل»
اهمیت: 4
تابع filterRangeInPlace(arr, a, b)
را بنویسید که یک آرایه arr
دریافت میکند و تمام مقدارها به جز آنهایی که بین a
و b
هستند را حذف میکند. آزمایش به این صورت است: a ≤ arr[i] ≤ b
.
تابع باید فقط آرایه را تغییر دهد. نباید چیزی را برگرداند.
برای مثال:
let
arr =
[
5
,
3
,
8
,
1
]
;
filterRangeInPlace
(
arr,
1
,
4
)
;
// تمام اعداد به جز 1 تا 4 را حذف کردیم
alert
(
arr )
;
// [3, 1]
function filterRangeInPlace(arr, a, b) {
for (let i = 0; i < arr.length; i++) {
let val = arr[i];
// اگر بیرون از بازه بود آن را حذف کن
if (val < a || val > b) {
arr.splice(i, 1);
i--;
}
}
}
let arr = [5, 3, 8, 1];
filterRangeInPlace(arr, 1, 4); // تمام اعداد به جز 1 تا 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--
;
}
}
}