JavaScript - Compter le nombre d'occurence de valeurs dans un tableau

En Javascript, j’essaie de prendre un tableau initial de valeurs numériques et de compter les éléments qu’il contient. Idéalement, le résultat serait un nouveau tableau contenant le nombre de fois que chaque élément apparaît. Je reste tout de même ouvert aux suggestions concernant le format de la sortie.

Par exemple, si le tableau initial était :

7, 7, 3, 3, 3, 3, 9, 1, 1

Le tableau contiendrait le nombre de fois que cet élément apparaît dans le tableau initial :

2, 4, 1, 2

Comme le nombre 7 apparaît deux fois dans le tableau initial, le nombre 3 apparaît quantre fois etc…

J’ai énormément cherché une solution, mais rien ne me paraît fonctionner. Toute aide serait la bienvenue !

Vous pouvez utiliser un objet pour stocker les résultats :

const arr = [7, 7, 3, 3, 3, 3, 9, 1, 1];
const occ = {};

for (const n of arr) {
  occ[n] = occ[n] ? occ[n] + 1 : 1;
}

console.log(occ[7], occ[3], occ[9], occ[1]);

Sortie:

2 4 1 2

Si vous voulez récupérer les valeurs dans le tableau, utilisez simplement la fonction keys()

keys(occ);  // returns ["7", "3", "9", "1"]
1 « J'aime »

Essayez le code suivant, vous aurez comme résultat la valeur et le nombre d’occurrence associé.

const obj = [7, 7, 3, 3, 3, 3, 9, 1, 1].reduce(function (occur, i) {
  return occur[i] ? ++occur[i] : occur[i] = 1, occur
}, {});

console.log(obj) // => { 1: 2, 3: 4, 7: 2, 9: 1 }

a pour effet de trier le tableau

1 « J'aime »