torna alle lezioni

Filtrare un range "sul post"

importanza: 4

Scrivi una funzione filterRangeInPlace(arr, a, b) che prenda un array arr e ne rimuova tutti i valori, tranne quelli contenuti tra a e b. Il test è: a ≤ arr[i] ≤ b.

La funzione dovrebbe solamente modificare l’array. Senza ritornare nulla.

Ad esempio:

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

filterRangeInPlace(arr, 1, 4); // rimuove tutti i numeri tranne quelli da 1 a 4

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

Apri una sandbox con i test.

function filterRangeInPlace(arr, a, b) {

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

    // rimuove se fuori dal range
    if (val < a || val > b) {
      arr.splice(i, 1);
      i--;
    }
  }

}

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

filterRangeInPlace(arr, 1, 4); // rimossi tutti i numeri tranne quelli da 1 a 4

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

Apri la soluzione con i test in una sandbox.