Krustiņu un nullīšu maiņas analīze

Šajā nodarbībā es vēlos jums parādīt, kā izveidot krustiņu un nullīšu maiņu vienā koda rindā. Jūs, visticamāk, esat izveidojuši kaut ko līdzīgu šim:

javascriptfunction start(cells) {
  let i = 0; // sākotnējā skaitītāja vērtība
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // palielinām skaitītāju
    });
  }
}

Es ierosinu atrisināt uzdevumu īsāk. Izveidosim mūsu 'spēlētāju' masīvu:

javascriptlet gamers = ['X', 'O'];

Kā jūs varat redzēt, šajā masīvā krustiņam ir atslēga 0, bet nullītei - atslēga 1. To pats var teikt arī par i % 2 - krustiņam atlikums būs 0, bet nullītei - 1.

Tas ir, šo var izmantot atslēgas vietā:

javascriptlet gamers = ['X', 'O'];
let key = i % 2;

console.log(gamers[key]);

Vai vēl īsāk:

javascriptlet gamers = ['X', 'O'];
console.log(gamers[i % 2]);

Vai vēl īsāk:

javascriptconsole.log(['X', 'O'][i % 2]);

Vienkāršosim tagad mūsu funkcijas start kodu:

javascriptfunction start(cells) {
  let i = 0;
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      this.textContent = ['X', 'O'][i % 2];
      i++;
    });
  }
}
Задание 1

Patstāvīgi, neieskatoties manā kodā, veiciet aprakstīto labojumu.

Задание 2

Šobrīd uz jebkuras šūnas var veikt neierobežotu klikšķu skaitu, mainot, piemēram, krustiņu uz nullīti. Izlabojiet to.