[ES6] Tri dans un tabeau d'objet, besoin de propreté
Bonjour à tous,
J'ai un tableau d'objet dont j'aimerais éliminer les doublons.
Voici la classe en question :
Code:
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 tableau :
Code:
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})); |
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).
Voici ce que j'ai fait :
Code:
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;
}); |
Ç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:
1 2
|
arr = arr.formuleMagique((...) => ...); |
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é :(
Auriez-vous une idée pour rendre ce code plus concis et plus propre ?
Merci à vous,
A bientôt