zpět k lekci

Přístup k poli[-1]

V některých programovacích jazycích můžeme přistupovat k prvkům pole pomocí záporných indexů, které se počítají od konce.

Například:

let pole = [1, 2, 3];

pole[-1]; // 3, poslední prvek
pole[-2]; // 2, jeden krok od konce
pole[-3]; // 1, dva kroky od konce

Jinými slovy, pole[-N] je totéž jako pole[pole.length - N].

Vytvořte proxy, která bude toto chování implementovat.

Měla by fungovat takto:

let pole = [1, 2, 3];

pole = new Proxy(pole, {
  /* váš kód */
});

alert( pole[-1] ); // 3
alert( pole[-2] ); // 2

// Ostatní funkcionalita pole by měla zůstat nezměněná
let pole = [1, 2, 3];

pole = new Proxy(pole, {
  get(cíl, vlastnost, příjemce) {
    if (vlastnost < 0) {
      // i když k poli přistupujeme přes pole[1],
      // vlastnost je řetězec, takže jej musíme konvertovat na číslo
      vlastnost = +vlastnost + cíl.length;
    }
    return Reflect.get(cíl, vlastnost, příjemce);
  }
});


alert(pole[-1]); // 3
alert(pole[-2]); // 2