- let t = [2,0,2,0,2,3];
- console.time("time");
- unique(t);
- console.timeEnd("time");
Nous pourrons comparer le temps d'exécution des différentes propositions de code.
Nous pourrions également integrer un test élémentaire sur le tableau en argument
- if (!Array.isArray(arr)) {
- throw new TypeError('array-unique expects an array.');
- }
Les écritures suivantes ne sont pas commentées
- function unique(t){
- let cur = t.length;
- while (--cur){
- for (let i=0; i< cur; i++){
- if (t[i] == t[cur]){
- t.splice(cur,1);
- break;
- }
- }
- }
- }
- function unique(arr) {
- let i = -1;
- while (i++ < arr.length) {
- var j = i + 1;
- for (; j < arr.length; ++j) {
- if (arr[i] === arr[j]) {
- arr.splice(j--, 1);
- }
- }
- }
- return arr;
- };
- function unique(array) {
- let passed = [];
- for (let i=0 ; i < array.length; i++) {
- if (array.indexOf( array[i]) === i)
- passed.push(array[i]);
- }
- return passed;
- }
code
- function unique(t){
- let u = t.reduce(function(a,c){
- if (!a.includes(c)){
- a.push(c)
- }
- return a;
- },[])
- return u;
- }
code
- function unique(value,index,tab){
- return tab.indexOf(value) === index;
- }
- console.time("while")
- t = t.filter(unique);
- console.timeEnd("while");
- console.time("while")
- let v = [...new Set(t)];
- console.timeEnd("while");
- const T = [
- { name: 'dupont', id:22 },
- { name: 'dupont', id:20 },
- { name: 'dupond', id:21 },
- { name: 'dupond', id:21 },
- ];
- const unique = [];
- const map = new Map();
- for (const item of T) {
- if(!map.has(item.id)){
- map.set(item.id, true); // set any value to Map
- unique.push({
- id: item.id,
- name: item.name
- });
- }
- }
- console.log(unique)