Pages

Vers l'infini et au delà !

class Template {
constructor(template) {
this.defaultTemplate = `<li data-titre="{{titre}}">{{contenu}}</li>`;
this.template = template || this.defaultTemplate;
}
randomChoise = (html, tagName, pos) => {
const regExp = new RegExp(`<${tagName}`, 'g');
let nbMatch = 0;
let newHTML = html.replace(regExp, function (match) {
if (nbMatch++ == pos) {
return `<${tagName} class='selected'`
} else {
return match;
}
})
return newHTML;
}
itemList(items) {
let view = "";
for (let item of items) {
let template = this.template;
//
let solution = 0;
for (let [key, value] of Object.entries(item)) {
//console.log(key,value);
if (key == "answer") solution = value;
template = template.replace(`{{${key}}}`, value);
}
//console.log(solution)
//modif templat
template = this.randomChoise(template, 'li', solution)
//console.log(template);
view = view + template;
}
return view;
}
}
const modif = async () => {
const data = await fetch(
'https://opentdb.com/api.php?amount=1&category=9&difficulty=easy&type=multiple'
);
const questions = await data.json();
quizz = questions.results;
// console.table(quizz);
const formatQuestions = [];
quizz.forEach( (r) => {
let q = {};
console.table(r)
q.question = r.question;
const rand = Math.floor(Math.random() * 4);
r.incorrect_answers.splice(rand, 0, r.correct_answer)
//add the correct answer randomly in incorrect
r.incorrect_answers.forEach((choice, index) => {
q[`choice${index + 1}`] = choice;
});
q.answer = rand;
formatQuestions.push(q)
})
//console.table(formatQuestions)
return formatQuestions;
}
//
(async () => {
const questions = await modif();
t = new Template(
`<div> <h1> {{question}} </h1>
<ul>
<li>{{choice1}}</li>
<li>{{choice2}}</li>
<li>{{choice3}}</li>
<li>{{choice4}}</li>
</ul>
</div>`);
let ui = document.querySelector(".testTemplate");
ui.insertAdjacentHTML("beforeend", t.itemList(questions));
})()
//show();
view raw gistfile1.txt hosted with ❤ by GitHub

See the Pen Untitled by dupont (@dupontcodepen) on CodePen.

Reduce : Last two

let value = 610;
const table = new Map([
[0,'yellowgreen'],
[150, 'green'],
[600, 'olive'],
[750, 'red'],
[800, 'black'],
]);
const closestKey = [...table.keys()].reduce( (acc, key) => {
return acc = ( Math.abs(acc-value) < Math.abs(key-value) ) ? acc : key
})
console.log(`the closest value of ${value} is ${table.get(closestKey)}`)
view raw closest.js hosted with ❤ by GitHub
const country = new Map([
["france","Fr"],["bresil","Br"],["argentine","Ar"],["senegal","Se"],
]);
const objCountry = Object.fromEntries(country);
const reverseMapping = o => Object.keys(o).reduce((a, k) =>
Object.assign(a, { [o[k]]: k }), {})
const T = new Map(Object.entries(reverseMapping(objCountry)));
console.log(T.get("Br"))

Fetch : one more

 Notez l'événement sur le scrool !


DS : 5 minutes


const joueurs = [

  {nom:"Benzema",pays:"France",but:7},{nom:"Mbappe",pays:"FRANCE",but:8},

  ];


Donner sous forme de dessin le résultat de :

&) const noms = joueurs.map(( {nom }) => nom )


&) const formatCountry = joueurs.map( function(joueur){

  joueur.pays = joueur.pays.toLowerCase()

  return joueur

})

Notez que ce code ne correspondrait en rien à une demande de normalisation du pays d'origine.


Completer le code (lien) pour obtenir


Afficher le résultat du code

const formatCountry = joueurs.map( function(play){
  const newPlayer = Object.assign({WorldCup: "Qatar 22"}, play);
  newPlayer.pays = newPlayer.pays.toLowerCase();
  return newPlayer
})


Extension chrome JSON Viewer

 

Installer une extension


  1. Ouvrez le Chrome Web Store.
  2. Recherchez et sélectionnez l'extension que vous souhaitez installer json viewer
  3. Cliquez sur Ajouter à Chrome.
  4. Certaines extensions vous indiquent si elles ont besoin d'autorisations ou d'informations particulières. Pour approuver, cliquez sur Ajouter l'extension.
    • Important : Veillez à n'approuver que les extensions de confiance.

Pour utiliser l'extension, cliquez sur l'icône située à droite de la barre d'adresse.