Bonjour.
Suite à quelques questions posées de façon récurrente dans le forum, je vous propose un petit tour dans le monde des tableaux
Un tableau est un objet mathématique bien défini. il s’agit d’une structure mathématique contenant un nombre n entier d’objets pris dans un ensemble K
Si on se réfère à cette «*définition», tous les éléments d’un tableau font partie d’un même ensemble. Et leur nombre est fini.
Chaque élément du tableau est repéré par sa position dans le tableau.
Tous les langages informatiques proposent une structure de donnée qui se rapproche plus où moins de cela. Et JavaScript ne déroge pas à la règle et propose donc la structure Array.
Cette structure correspond-elle à la définition*?
C’est bien une structure qui contient des éléments. La taille du tableau peut paraitre non définie, mais on peut considérer qu’elle est Number.MAX_VALUE, qui est le plus gros entier représentable en JavaScript. C’est donc bien un entier fini.
La définition mathématique impose que tous les éléments du tableau soient des éléments d’un même ensemble. Et en JavaScript un tableau peut contenir n’importe quoi. Enfin n’importe quel objet. Donc un tableau en JavaScript et un tableau d’objet.
La capacité dynamique du langage permet d’avoir des tableaux dont la taille change. Cela correspond mathématiquement à la définition dynamique d’un nouveau tableau.
Mais la mathématique nous offre des structures de tableau plus complexes. Les tableaux à double entrée. Il s’agit d’une structure mathématique contenant un nombre nXm (n entier, m entier) d’objets pris dans un ensemble K. n est dit nombre de lignes et m nombre de colonnes. Chaque élément est repéré par deux positions la ligne et la colonne.
On peut très facilement conclure que toutes les lignes comptent m éléments et toutes les colonnes comptent n éléments.
JavaScript ne propose pas de structure de donnée pour un tel objet mathématique. D’autres langages de programmation proposent des structures de données pour ce genre d’objet, mais JavaScript ne propose rien.
il est important d’en être conscient, car pour représenter de tels objets le développeur va devoir définir sa propre structure et le langage ne lui apportera aucun soutien pour garantir que la structure choisie est en adéquation avec l’objet mathématique «*Tableau à double entrée*»
Nous avons vu qu’un tableau JavaScript et un tableau au sens mathématique et qu’il peut contenir tout type d’objet. Très souvent, nous allons utiliser cette capacité pour faire un tableau de tableau.
Par exemple*: un tableau de n lignes qui sont des tableaux de m éléments ou alors un tableau de m colonnes qui sont des tableaux de n éléments.
La simple formulation de cette approche montre les limites. Nous avons soit un tableau de ligne et la notion de colonnes disparait soit un tableau de colonnes et c’est la notion de ligne qui disparait.
Autre limite*: quelle que soit l’approche choisie, nous avons un tableau contenant des tableaux et ces derniers doivent tous avoir la même taille, mais rien ne nous le garantit.
Dans un cas comme dans l’autre nous sommes donc loin d’un tableau à double entrée.
Ce sera donc à vous développeur de faire le nécessaire.
De la même façon, travailler avec des tableaux à n entrée ne pourra se faire qu’au travers de vos propres structures.
Alors, soyez conscient de ces limitations, ne considérez jamais que vos structures sont de fait conforme aux objets mathématiques qu’elles sont censées représenter.
A+JYT
Partager