zpět k lekci

Filtrace podle rozsahu „na místě“

důležitost: 4

Napište funkci filtrujPodleRozsahuNaMístě(pole, a, b), která obdrží pole pole a odstraní z něj všechny hodnoty, které neleží mezi a a b. Test je: a ≤ pole[i] ≤ b.

Funkce by měla jen modifikovat pole. Neměla by nic vracet.

Příklad:

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

filtrujPodleRozsahuNaMístě(pole, 1, 4); // odstraní čísla, která nejsou od 1 do 4

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

Otevřít pískoviště s testy.

function filtrujPodleRozsahuNaMístě(pole, a, b) {

  for (let i = 0; i < pole.length; i++) {
    let hodnota = pole[i];

    // odstraní hodnotu, jestliže je mimo interval
    if (hodnota < a || hodnota > b) {
      pole.splice(i, 1);
      i--;
    }
  }

}

let testovacíPole = [5, 3, 8, 1];

filtrujPodleRozsahuNaMístě(testovacíPole, 1, 4); // odstraní čísla, která nejsou od 1 do 4

alert( testovacíPole ); // [3, 1]

Otevřít řešení s testy na pískovišti.