Pages

Map en action


  1. function alphabetRange (start, end, step = 1) {
  2.   return new Array(Math.ceil((end.charCodeAt(0) - start.charCodeAt(0))/step))
  3.   .fill(start.charCodeAt(0))
  4.   .map((x, i) => String.fromCharCode(i*step + start.charCodeAt(0)));
  5. }

  6. console.log(alphabetRange('c', 'h', 2));

String in action


  1. let s = 'abcdefghijklmnopqrstuvwxyz'

  2. s= s.substring(s.indexOf('p'), s.indexOf('t')+ 1);
  3. let  A= s.split('');  




code

Unique !

Nous allons donner un ensemble de fonction recherchant les valeurs uniques d'un tableau.

  1. let t = [2,0,2,0,2,3];

  2. console.time("time");
  3. unique(t);
  4. 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
  1.   if (!Array.isArray(arr)) {
  2.     throw new TypeError('array-unique expects an array.');
  3.   }
Les écritures suivantes ne sont pas commentées
  1. function unique(t){
  2.   let cur = t.length;
  3.   while (--cur){

  4.   for (let i=0; i< cur; i++){
  5.       if (t[i] == t[cur]){
  6.           t.splice(cur,1);
  7.           break;
  8.       }
  9.   }
  10.   }
  11. }
code
  1. function unique(arr) {
  2.   let i = -1;
  3.   while (i++ < arr.length) {
  4.     var j = i + 1;

  5.     for (; j < arr.length; ++j) {
  6.       if (arr[i] === arr[j]) {
  7.         arr.splice(j--, 1);
  8.       }
  9.     }
  10.   }
  11.   return arr;
  12. };
code
  1. function unique(array) {
  2.   let passed = [];
  3.   for (let i=0 ; i < array.length; i++) {
  4.     if (array.indexOf( array[i]) === i)
  5.       passed.push(array[i]);
  6.   }
  7.   return passed;
  8. }
code
  1. function unique(t){
  2.   
  3.   let u = t.reduce(function(a,c){
  4.     if (!a.includes(c)){
  5.       a.push(c)
  6.     }
  7.     return a;   
  8.     },[])
  9.   return u;
  10. }
code
code
  1. function unique(value,index,tab){
  2.   return tab.indexOf(value) === index;
  3. }

  4. console.time("while")
  5. t = t.filter(unique);
  6. console.timeEnd("while");
  1. console.time("while")
  2. let v = [...new Set(t)];
  3. console.timeEnd("while");
  1. const T = [
  2.     { name: 'dupont', id:22 },
  3.     { name: 'dupont', id:20 },
  4.     { name: 'dupond', id:21 },
  5.     { name: 'dupond', id:21 },
  6.   ];
  7. const unique = [];
  8. const map = new Map();
  9. for (const item of T) {
  10.     if(!map.has(item.id)){
  11.         map.set(item.id, true);    // set any value to Map
  12.         unique.push({
  13.             id: item.id,
  14.             name: item.name
  15.         });
  16.     }
  17. }
  18. console.log(unique)

Projet

Ecrire l'équivalent Js de ce code Python


  1. import random
  2. from collections import Counter

  3. l = [random.randint(0,9) for i in range(10)]

  4. print (l)

  5. print(Counter(l).most_common())

  6. print(Counter(l).most_common(1))


Exemple de résultat
[6, 6, 0, 4, 8, 7, 6, 4, 7, 5]
[(6, 3), (4, 2), (7, 2), (0, 1), (8, 1), (5, 1)]
[(6, 3)]

code


deepCopy

function deepCopy(p, c={}){
  
  for (let i in p){
    if (p.hasOwnProperty(i)){
      if (typeof p[i] ==="object"){
        c[i] = Array.isArray(p[i]) ? [] : {};
        deepCopy(p[i], c[i]);
      }
      else {
        c[i] = p[i];
      }
    }
  }
  return c;

}

let u = [1,[1,2],3];

let c = deepCopy(u);

console.log(u);


code

Range : bad idea


Définition de la fonction range. lecture


passage des paramètres

Ecrire les valeurs affichées



const testPassagePara = function(args) {

    let start = args;
    
    return [start];

}

console.log(testPassagePara(1))

//-------------------------------------------
const testPassagePara = function(args) {

    let start = args;
    
    return [start];

}
console.log(testPassagePara())

//-------------------------------------------
const testPassagePara = function(args=-1) {

    let start = args;
    
    return [start];

}

console.log(testPassagePara())

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;
    
    return [start,end,step];

}
console.log(testPassagePara(1, 5, 2, -1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;

    return {start,end,step};
}


console.log(testPassagePara(1, 5, 2, -1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;

    return {start,end,step};
}


console.log(testPassagePara(1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start=0,end=0,step=1] = args;

    return [start,end,step];
}


console.log(testPassagePara(1))

nb occurence

const words = [1,2,7];

const alphabetical = words.reduce((a, x) => {
   if (!a[x]) a[x] = 0;
   a[x]=a[x]+1;
return a},{});

-----------------------

const alphabetical = words.reduce((a, x) => {
   if (!a[x]) a[x] = 0;
   a[x]=a[x]+1;
return a},[]);

-----------------------


const words = [1,2,2,1,5];

let min = words.reduce((a, x) => Math.min(a,x));

console.log(min);

let max = words.reduce((a, x) => Math.max(a,x));

console.log(max);

let t = Array.from({length:max-min+1},()=>0);

console.log(t);

const alphabetical = words.reduce((a, x) => {
   a[x-1]= a[x-1]+1;
return a},t);

--------------------------------


const words = [1,2,2,1,5];

let minMaxDistSumMoyNb = words.reduce((a, x) => {
   let [m,M] = [Math.min(a[0],x),Math.max(a[1],x)];
   let sum = a[3]+x;
   let nb = a[5]+1;
   let moy = sum/nb;
   return [m,M,M-m+1,sum,moy,nb]
}
,[Number.MAX_VALUE,Number.MIN_VALUE,Number.MIN_VALUE,0,0,0]);

console.log(minMaxDistSumMoyNb);

Trier en multicritère


Code

swap

en C

void swap(int *xp, int *yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}

int main()
{
    int x=1, y=2;

    swap(&x, &y);
    printf("x = %d, y = %d", x, y);
    return 0;
}

➥ code dans Pythontutor

js


let swap = (x,y) => [y,x];

let x=1, y=2;
[x,y] = swap(x,y);
console.log(`x=${x} y=${y}`)

➥ code dans Pythontutor

Les pointeurs et les tableaux !

Aide TD max col

let TAB_MAX_Value = TAB.reduce((max_val,lig_val)=> Math.max(max_val,Math.max(...(lig_val))),Number.MIN_VALUE);



// ecriture => let TAB_Min = TAB.reduce((m,l) => Math.min(m,Math.min(...(l))),TAB[0][0]);


code source