Cours Apps Script : tableaux avancés

Nous avons vu précédemment comment créer un tableau, accéder à une valeur d'un tableau et la modifier, ajouter une valeur à un tableau, connaître le nombre de valeurs d'un tableau, etc.

Nous allons maintenant aller beaucoup plus loin avec les tableaux, donc si tout ceci n'est pas clair pour vous, commencez par prendre quelques minutes pour aller relire la page sur les tableaux.


Supprimer une valeur

Vous connaissez déjà la méthode push qui permet d'ajouter une valeur à la fin d'un tableau et unshift qui permet d'ajouter une valeur au début.

Il existe aussi 2 méthodes pour la suppression d'une valeur au début et à la fin : pop qui supprime la dernière valeur, et shift qui supprime la première valeur.

En voici un exemple :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Suppression de la dernière valeur
  tableau.pop();
  console.log(tableau); // Affiche : [ 10, 20, 30, 40 ]

  // Suppression de la première valeur
  tableau.shift();
  console.log(tableau); // Affiche : [ 20, 30, 40 ]
}

Ces 2 méthodes retournent la valeur supprimée, vous pouvez donc la récupérer lorsque c'est utile :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Dernière valeur
  const derniereValeur = tableau.pop();
  console.log(derniereValeur); // Affiche : 50

  // Première valeur
  const premiereValeur = tableau.shift();
  console.log(premiereValeur); // Affiche : 10
}

Pour supprimer une ou plusieurs valeurs en partant d'une position définie, utilisez la méthode splice :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Suppression de 2 valeurs en commençant à l'indice 1
  const valeursSupprimees = tableau.splice(1, 2);
  
  console.log(valeursSupprimees); // Affiche : [ 20, 30 ]
  console.log(tableau); // Affiche : [ 10, 40, 50 ]
}

Position

Pour connaître la position d'une valeur dans un tableau, utilisez la méthode indexOf :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Position du nombre 40
  const position = tableau.indexOf(40);
  console.log(position); // Affiche : 3

  // Vérification
  console.log(tableau[position]); // Affiche : 40
}

Cette méthode peut aussi servir à déterminer si une valeur est présente ou non dans le tableau (et retourne -1 s'il n'y a pas de résultat) :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Position du nombre 60
  const position = tableau.indexOf(60);

  // Message en fonction du résultat
  console.log(position == -1 ? 'Aucun résultat' : 'Résultat = ' + position); // Affiche : Aucun résultat
}

Contient

La méthode includes permet également de savoir si une valeur est présente ou non dans le tableau (et retourne true ou false) :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  // Si le tableau contient la valeur 30
  if (tableau.includes(30)) {
    console.log('OUI'); // Affiché
  }
}

Copier un tableau

Pour copier un tableau, vous ne pouvez pas simplement entrer tableau2 = tableau1, car rappelez-vous que dans ce cas, seule la référence vers le tableau est passée à tableau2.

Pour créer une copie d'un tableau, utilisez simplement la méthode slice (sans argument) :

function exemple() {

  const tableau1 = [10, 20, 30, 40, 50];
  const tableau2 = tableau1.slice();

  tableau2.push(60);

  console.log(tableau1); // Affiche : [ 10, 20, 30, 40, 50 ]
  console.log(tableau2); // Affiche : [ 10, 20, 30, 40, 50, 60 ]
}

Notez que la méthode slice permet également de copier seulement une portion d'un tableau :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  console.log(tableau.slice(0, 3)); // Affiche : [ 10, 20, 30 ]
  console.log(tableau.slice(1)); // Affiche : [ 20, 30, 40, 50 ]
  console.log(tableau.slice(-2)); // Affiche : [ 40, 50 ]
}

Décomposer un tableau

Pour décomposer un tableau, autrement dit "sortir" les valeurs du tableau, utilisez l'opérateur .... En voici un exemple pour mieux comprendre :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  console.log(tableau); // Affiche : [ 10, 20, 30, 40, 50 ]
  console.log(...tableau); // Affiche : 10 20 30 40 50
}

Vous pouvez par exemple vous en servir pour copier un tableau (en sortant ici les valeurs du tableau, à l'intérieur d'un nouveau tableau) :

function exemple() {

  const tableau1 = [10, 20, 30, 40, 50];
  const tableau2 = [...tableau1];

  tableau2.push(60);

  console.log(tableau1); // Affiche : [ 10, 20, 30, 40, 50 ]
  console.log(tableau2); // Affiche : [ 10, 20, 30, 40, 50, 60 ]
}

Il peut servir aussi à ajouter les valeurs d'un tableau dans un autre tableau (et dans cet exemple, sans cet opérateur c'est le tableau qui est ajouté et non les valeurs du tableau) :

function exemple() {

  const tableau1 = [10, 20, 30, 40, 50];
  const tableau2 = [60, 70, 80, 90, 100];

  tableau1.push(...tableau2);

  console.log(tableau1); // Affiche : [ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ]
  console.log(tableau2); // Affiche : [ 60, 70, 80, 90, 100 ]
}

Ou vous pouvez créer un nouveau tableau avec le contenu des 2 autres :

function exemple() {

  const tableau1 = [10, 20, 30, 40, 50];
  const tableau2 = [60, 70, 80, 90, 100];
  const tableau3 = [...tableau1, ...tableau2];

  console.log(tableau1); // Affiche : [ 10, 20, 30, 40, 50 ]
  console.log(tableau2); // Affiche : [ 60, 70, 80, 90, 100 ]
  console.log(tableau3); // Affiche : [ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ]
}

Array

Pour créer un tableau avec un nombre défini d'emplacements vides, utilisez Array :

function exemple() {

  const tableau = Array(10);

  tableau[7] = 'Test';

  console.log(tableau); // Affiche : [ , , , , , , , 'Test', ,  ]
}

Joindre

Pour joindre les valeurs d'un tableau et obtenir une chaîne de caractères, utilisez la méthode join (l'équivalent de la fonction Google Sheets JOIN) :

function exemple() {

  const tableau = [10, 20, 30, 40, 50];

  console.log(tableau.join(' / ')); // Affiche : 10 / 20 / 30 / 40 / 50
}

Diviser en tableau

Pour diviser une chaîne de caractères en un tableau, utilisez la méthode split (l'équivalent de la fonction Google Sheets SPLIT) :

function exemple() {

  const texte = '10 / 20 / 30 / 40 / 50';

  console.log(texte.split(' / ')); // Affiche : [ '10', '20', '30', '40', '50' ]
}

Pour diviser chaque caractère d'une chaîne de caractères en un tableau, utilisez la méthode split (ou l'opérateur ... dans un tableau) :

function exemple() {

  const texte = 'Sheets-Pratique';

  console.log(texte.split('')); // Affiche : [ 'S', 'h', 'e', 'e', 't', 's', '-', 'P', 'r', 'a', 't', 'i', 'q', 'u', 'e' ]
  console.log([...texte]); // Affiche : [ 'S', 'h', 'e', 'e', 't', 's', '-', 'P', 'r', 'a', 't', 'i', 'q', 'u', 'e' ]
}