بازگشت به درس

جداسازی توسط حدود «در محل»

اهمیت: 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]

باز کردن یک sandbox همراه با تست‌ها.

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--;
    }
  }

}

باز کردن راه‌حل همراه با تست‌ها درون یک sandbox.