Diferència entre revisions de la pàgina «M06 UF1A3. Teoria»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «=T11. Treballar amb objectes= *https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Working_with_Objects =T12. Keyed collections (col·leccions amb clau)= *https...».)
 
m
Línia 1: Línia 1:
 
=T11. Treballar amb objectes=
 
=T11. Treballar amb objectes=
 
*https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Working_with_Objects
 
*https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Working_with_Objects
=T12. Keyed collections (col·leccions amb clau)=
+
=T12. Repàs de prototype=
*https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Keyed_collections
+
'''prototype''' és una propietat dels objectes String, Number, Date, Array, RegExp,... que ens permet definir un nou mètode a aquests objectes.
=T13. Javascript avançat=
+
 
*Promises
+
'''Ex 1'''. L'objecte Array no té un mètode per fer ''shuffle'' (desordenar). Tenim la següent funció que fa la feina:
*Interadors i generadors
+
*https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
*Javascript modules
+
<pre>
 +
function shuffle(array) {
 +
  let currentIndex = array.length,  randomIndex;
 +
 
 +
  // While there remain elements to shuffle...
 +
  while (currentIndex != 0) {
 +
 
 +
    // Pick a remaining element...
 +
    randomIndex = Math.floor(Math.random() * currentIndex);
 +
    currentIndex--;
 +
 
 +
    // And swap it with the current element.
 +
    [array[currentIndex], array[randomIndex]] = [
 +
      array[randomIndex], array[currentIndex]];
 +
  }
 +
 
 +
  return array;
 +
}
 +
 
 +
// Used like so
 +
var arr = [2, 11, 37, 42];
 +
shuffle(arr);
 +
console.log(arr);
 +
</pre>
 +
A partir d'aquesta funció, creem el mètode ''desordenar()'' dels Array.
 +
<pre>
 +
Array.prototype.desordenar = function() { return shuffle(this) }
 +
</pre>
 +
Comprovem que funciona:
 +
<pre>
 +
var arr = ['a','b','c','d'];
 +
console.log(arr.desordenar());
 +
</pre>
 +
Ara que ja sabem desordenar arrays, ara desordenarem strings, aprofitant que ja sabem desordenar arrays:
 +
<pre>
 +
String.prototype.desordenar = function() {
 +
var arr=this.split("");
 +
arr.desordenar();
 +
return arr.join("");
 +
}
 +
</pre>
 +
Per exemple, anem a crear el mètode desordenar() que desordeni els caràcters d'una cadena, de forma aleatòria
 +
<pre>
 +
var cad = "supercalifragilisticoespialidoso";
 +
 
 +
console.log(cad.desordenar())
 +
</pre>
  
 
{{Autor}}, octubre 2021
 
{{Autor}}, octubre 2021

Revisió del 10:53, 27 oct 2021

T11. Treballar amb objectes

T12. Repàs de prototype

prototype és una propietat dels objectes String, Number, Date, Array, RegExp,... que ens permet definir un nou mètode a aquests objectes.

Ex 1. L'objecte Array no té un mètode per fer shuffle (desordenar). Tenim la següent funció que fa la feina:

function shuffle(array) {
  let currentIndex = array.length,  randomIndex;

  // While there remain elements to shuffle...
  while (currentIndex != 0) {

    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;

    // And swap it with the current element.
    [array[currentIndex], array[randomIndex]] = [
      array[randomIndex], array[currentIndex]];
  }

  return array;
}

// Used like so
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);

A partir d'aquesta funció, creem el mètode desordenar() dels Array.

Array.prototype.desordenar = function() { return shuffle(this) }

Comprovem que funciona:

var arr = ['a','b','c','d'];
console.log(arr.desordenar());

Ara que ja sabem desordenar arrays, ara desordenarem strings, aprofitant que ja sabem desordenar arrays:

String.prototype.desordenar = function() {
	var arr=this.split("");
	arr.desordenar();
	return arr.join("");
}

Per exemple, anem a crear el mètode desordenar() que desordeni els caràcters d'una cadena, de forma aleatòria

var cad = "supercalifragilisticoespialidoso";

console.log(cad.desordenar())

creat per Joan Quintana Compte, octubre 2021