Bonjour à tous,
J'ai un tableau d'objet dont j'aimerais éliminer les doublons.
Voici la classe en question :
Le tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Client { constructor(obj) { this.m_lId = obj.m_lId || -1; } get id() { return this.m_lId; } }
Le but du jeu est d'éliminer les doublons pour que le tableau arr ne contienne plus que deux client (une instance identifiée 1, et l'autre identifiée 2).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let arr = []; arr.push(new Client({m_lId:1})); arr.push(new Client({m_lId:2})); arr.push(new Client({m_lId:2}));
Voici ce que j'ai fait :
Ça fonctionne mais ça ne me semble pas super super propre et je me dis qu'il doit forcément il y avoir un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 let uniqueArr = []; arr.filter((elem) => { let found = uniqueArr.find((elemFind) => { return elemFind.id === elem.id }); if(found != undefined) return false; uniqueArr.push(elem); return true; });
L'idéal aurait été de pouvoir définir un opérateur "==" dans la classe pour pouvoir comparer deux instances comme on peut le faire en C++ mais je n'ai pas trouvé ce genre de possibilité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 arr = arr.formuleMagique((...) => ...);
Auriez-vous une idée pour rendre ce code plus concis et plus propre ?
Merci à vous,
A bientôt
Partager