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]
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]