Releases: adrienjoly/js-test
qcm-10: AJAX GET
Pour effectuer une requête AJAX GET, et afficher la réponse du serveur dans un alert()
, il faut instancier la classe XMLHttpRequest
puis...
- ... appeler 2 méthodes, et définir 1 fonction
- ... appeler 1 méthode, et définir 2 fonctions
- ... appeler 3 méthodes
- ... définir 3 fonctions
J'ai écrit le code permettant d'envoyer une requête HTTP GET, mais rien ne se passe, et rien n'apparait dans la console.
Cela pourrait être dû à:
- une erreur de syntaxe
- une URL erronée
- l'oubli de l'appel à
send()
- l'oubli de l'usage de
JSON.parse()
Quel est le format le plus couramment utilisé de nos jours pour échanger des informations en AJAX avec une API ?
- HTML
- XML
- JSON
- texte brut
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var reponse = JSON.parse(xhr.responseText);
alert(/* A SAISIR */);
}
};
xhr.send();
Si on veut afficher la propriété email
de l'objet contenu dans la réponse à notre requête, par quoi faut-il replacer /* A SAISIR */
?
- JSON.parse(xhr.responseText.email)
- xhr.responseText.email
- reponse.email
- responseText['email']
v2.5.1: Fixes
== v2.5.1 Fixes
- Feature: added
eval-firebase-export
npm script - Feature: display max score per question on "suivi" dashboard
- Bug fix: display error messages if config will make suivi/dashboard fail
qcm-9: Composants
Qu'est-ce qu'un composant ?
- c'est le nom qu'on donne à tout programme JavaScript
- c'est le nom qu'on donne à tout div d'une page HTML
- c'est un module qui a été conçu pour être intégré par d'autres développeurs
- c'est une page web de documentation
Nous avons vu en cours que tout composant devait être conçu de manière à pouvoir être intégré plusieurs fois sur une même page.
Parmi ces stratégies de conception, laquelle ne permet PAS l'intégration multiple d'un composant:
- Faire en sorte que le composant s'applique sur des éléments groupés
- Demander à l'intégrateur d'appeler une fonction pour chaque intégration
- Demander à l'intégrateur de modifier le code source du composant
Soit le fichier HTML suivant:
<ul>
<li data-number="1">premier</li>
<li data-number="2">deuxième</li>
</ul>
Comment récupérer la valeur de l'attribut data-number
du deuxième élément <li>
?
- document.getElementById('2').data-number
- document.getElementsByTagName('li')[1].data-number
- document.getElementsByTagName('li').getAttribute('data-number')[1]
- document.getElementsByTagName('li')[1].getAttribute('data-number')
var lien = document.getElementById('mon-lien-a');
Comment changer le titre du lien <a>
(tel qu'il sera affiché à l'écran) référencé par la variable lien
?
-
lien.title = 'nouveau titre';
-
lien.innerHTML = 'nouveau titre';
-
lien.href = 'nouveau titre';
-
lien.setAttribute('title', 'nouveau titre');
Soit le code JS suivant:
// supposons que boutons référence un ensemble de boutons
for (var i = 0; i < boutons.length; i++) {
boutons[i].onclick = function() {
alert('vous avez cliqué sur le bouton nº' + i);
}
}
Que se passera-t-il quand on cliquera sur chaque bouton ?
- on verra l'alerte: "vous avez cliqué sur le bouton nºi"
- le numéro du bouton cliqué apparaitra dans un alert
- un numéro de bouton incorrect apparaitra dans un alert
- il ne se passera rien
Expliquez la raison du comportement observé à la question ci-dessus.
- il y a une erreur de syntaxe dans le code
- au moment du clic, la variable i vaudra boutons.length
- au moment du clic, la variable i vaudra 0
- la variable i n'est pas accessible dans le contexte de la fonction onclick
Quelle est la meilleure manière de résoudre le problème de la question ci-dessus ?
- il faut ralentir les itérations de la boucle
- il faut écrire une fonction onclick par bouton
- il faut passer la valeur de i en paramètre de notre fonction onclick
- il faut passer la valeur de i en paramètre d'une autre fonction, à chaque itération de la boucle
qcm-8: Manipulation styles / classes CSS
Soit le fichier HTML suivant:
<ul>
<li class="displayed" id="first-item">premier</li>
<li class="hidden">deuxième</li>
<li class="hidden">troisième</li>
</ul>
Quelle est la fonction du DOM la plus directe pour:
- accéder au premier élément
<li>
depuis JavaScript ?
- getElementById()
- getElementByClassName()
- getElementsByClassName()
- getElementsByTagName()
- accéder à tous les éléments
<li>
portant la classe"hidden"
?
- getElementById()
- getElementByClassName()
- getElementsByClassName()
- getElementsByTagName()
- accéder à tous les éléments
<li>
?
- getElementById()
- getElementByClassName()
- getElementsByClassName()
- getElementsByTagName()
Comment retirer la classe "hidden"
des deux derniers éléments <li>
?
- document.getElementsByClassName('hidden').className = '';
- document.getElementsByClassName('hidden').setAttribute('class', '');
- document.getElementsByClassName('hidden').classList.remove('hidden');
- (il faut utiliser une boucle)
Imaginez que vous disposez de la page HTML suivante:
<bouton id="mon-bouton">cliquez ici !</bouton>
Et de la règle CSS suivante:
.hidden {
display: none;
}
Écrivez le code JavaScript nécéssaire pour que la classe hidden
soit ajoutée au bouton une fois que l'utilisateur aura cliqué dessus, à l'aide de la propriété classList
.
qcm-7: DOM
Quel est le nom de l'attribut à utiliser pour donner le nom du fichier .js à charger dans une page HTML:
- href
- src
- scr
- type
Si je crée une fichier .js qui ne contient que la ligne alert('bonjour');
et que j'intègre ce fichier à une page HTML, que se passera-t-il ?
- rien
- l'alert ne s'affichera que si on copie-colle le code dans la console
- l'alert s'affichera quand l'utilisateur cliquera sur un bouton
- l'alert s'affichera à chaque (re)chargement de la page
Soit la page HTML suivante:
<body>
<p id="premier-paragraphe">Bonjour</p>
<p id="deuxieme-paragraphe">le monde</p>
</body>
Quelle instruction JavaScript dois-je exécuter pour accéder au deuxième paragraphe ?
- document.paragraphes[1];
- document.getElementById(1);
- document.getElementById('deuxieme-paragraphe');
- document.deuxieme-paragraphe;
Soit la page HTML suivante:
<body>
<form>
<input id="nom" value="Michel" />
<input id="prenom" value="Jean" />
</form>
</body>
Quelle instruction JavaScript dois-je exécuter pour modifier la valeur du champ <input>
dont l'identifiant est prenom
?
- document.getElementById('prenom').value = 'nouveau prénom';
- document.getElementById('prenom', 'nouveau prénom');
- document.prenom = 'nouveau prénom';
- document.input = ''
Imaginez que vous disposez de la page HTML suivante:
<bouton id="pouet">cliquez ici !</bouton>
Écrivez le code JavaScript nécéssaire pour que le message pouet !
s'affiche dans un alert
à chaque fois que l'utilisateur cliquera sur le bouton:
qcm-6: objects
Laquelle de ces instructions constitue un objet JavaScript valide:
- [ prop1: 3, prop2: 4 ]
- { prop1: 3, prop2: 4 }
- { 2, true, 'bonjour' }
- { 'a': 1; 'b': 2 }
Comment récupérer la valeur de la propriété nom
d'un objet affecté à une variable personne
?
- personne.get('nom');
- personne.[nom];
- personne[nom];
- personne.nom;
Toujours dans notre objet personne
, comment récupérer la valeur d'une propriété dont la clé est stockée dans la variable laCle
?
- personne.get(laCle);
- personne.laCle;
- personne[laCle];
- personne['laCle'];
var compteFacebook = {
groupes: {
maitresJedi: {},
lolcats: {
titre: 'Vive les chats !',
membres: [ 'Patrick' ],
},
},
};
Quelle instruction faut-il saisir pour accéder à la valeur 'Patrick'
?
- compteFacebook.groupes.lolcats.membres[0]
- compteFacebook.membres[0]
- [comptesFacebook][groupes][lolcats][membres][0]
- ['comptesFacebook']['groupes']['lolcats']['membres'][0]
Définir un objet contenant une propriété texte
ayant 'bonjour'
comme valeur, et stocker cet objet dans une variable message
.
Ajouter l'instruction permettant d'afficher avec alert()
la valeur de la propriété texte
de l'objet message
, en récupérant cette valeur depuis l'objet.
v2.5.0: Multi-instance deployment and evaluation
== v2.5.0 Multi-instance deployment and evaluation
- Feature:
npm run deploy-instances
=> batch deployment to several herokuapp.com apps - Feature:
redirectToHttps
,publishSolutions
andpublishEvalTests
config flags - Feature:
email-submit
back-end (to hash answers for email delivery) - Feature: display student name in header
- Feature: scores.csv splitted into one part per group
- Bug fix:
auto-eval
andrealtime-eval
now also works on Firefox and Safari - Bug fix: Multi-variant exercises now also work using
auto-eval
inPUBLIC_TEST
mode - Bug fix: don't display score if null/undefined
- Bug fix: prevent crash with quizz questions that do not have a solution
- Refactoring: solutions and tests files are no longer necessary
Successfully tested for an exam of 75 students. (js-partiel-1)
js-revisions-fixed: Exercices auto-évalués / compilation de QCMs et exercices du 1er semestre
Les bases - QCM
Comment ouvrir la console JavaScript dans Google Chrome ?
- En tapant "console"
- En appelant le prof
- En demandant gentiment à Siri
- En pressant Cmd-Alt-J ou Ctrl-Shift-J
Que retourne typeof
quand il est appliqué sur "bonjour"
?
"string"
string
"object"
undefined
Types de valeurs en JavaScript. Quel est l'intrus ?
- string
- boolean
- decimal
- number
Comment créer une variable en JavaScript ?
- maVariable;
- var maVariable;
- x = 0;
- maVariable = 'bonjour';
Quel est le type de cette variable:
var maVariable = 3.2;
- string
- number
- decimal
- boolean
Quel est le type de cette variable:
var maVariable = '3.2';
- string
- number
- decimal
- boolean
Comment afficher la valeur d'une variable appelée maVariable
depuis la console ?
- maVariable;
- var maVariable;
- maVariable?
- show maVariable
Comment changer la valeur d'une variable existante ? (déjà créée)
- var maVariable = 4;
- maVariable = 4;
- maVariable(4);
- 4 = maVariable;
Si j'ai créé une variable dont la valeur est un nombre, que se passera-t-il si je lui affecte ensuite une chaine de caractères ?
- erreur, car le type est différent.
- erreur, car on ne peut pas changer la valeur d'une variable.
- la valeur de la variable va être remplacée par la chaine de caractères.
- les deux valeurs vont être concaténées.
En respectant les conventions indiquées en cours, quelle affectation faut-il exécuter pour que J'ai tout compris !
s'affiche à l'écran ?
alert(message);
- message = "J'ai tout compris !";
- message = 'J"ai tout compris !';
- message = 'J'ai tout compris !';
- message = J'ai tout compris !
Conditions - QCM
Que vaut cette expression de comparaison de valeur ?
3.2 === '3.2'
- true
- false
- undefined
- c'est une affectation
Quelle section va être exécutée, si on exécute le code suivant ?
var nb = 2;
if (nb === 1) {
// A
} else {
// B
}
- A
- B
- A et B
- aucune
Quelle section de va être exécutée, si on exécute le code suivant ?
var nb = 2;
if (nb === 2) {
// A
} else if (nb > 1) {
// B
} else {
// C
}
- A
- B
- A et B
- A, B et C
À quoi ressemblerait l'arbre de décision correspondant à ce code:
var reponse = prompt('as-tu faim ?')
if (reponse === 'oui') {
var reponse2 = prompt('aimes-tu les burgers ?');
if (reponse2 === 'oui') {
alert('alors je t\'en offre un !');
} else {
alert('dommage !');
}
} else {
alert('désolé');
}
- une boîte et deux branches
- deux boîtes de même niveau
- une boîte de niveau 1, et une boîte de niveau 2
- une boîte et trois branches
Pourquoi faut-il éviter d'utiliser les opérateurs ==
et !=
?
- car il vaut mieux utiliser une affectation
=
- car ils sont trop stricts
- car ils sont trop laxistes
- var
===
et!==
sont plus lisibles
Conditions - Code
Implémenter une condition qui affecte 'egal'
à une variable resultat
seulement si une autre variable nombre
vaut strictement 4
. Indenter correctement.
Implémenter un chat-bot à partir de l'arbre de décision suivant:
Comme vu et pratiqué en cours:
- Les questions posées par l'ordinateur sont représentées par des rectangles, et sont à implémenter à l'aide de la fonction
prompt()
. - Les réponses comprises par l'ordinateur sont écrites à côté de chaque branche, et sont à implémenter à l'aide de conditions.
- Les messages à afficher par l'ordinateur sont représentés par des cercles, et sont à implémenter à l'aide de la fonction
alert()
.
Vous serez noté(e) sur:
- le respect à la lettre du texte des questions et des réponses (espaces, accents, et majuscules/minuscules compris).
- le respect des règles d'indentation et autres conventions vues en cours. (ex: 2 espaces par niveau d'indentation)
- le bon fonctionnement de votre code, sans erreurs, depuis la console JavaScript de Google Chrome, pour chacun des cas illustrés dans l'arbre de décision.
Algo / Boucles - QCM
Combien de fois les instructions vont-elles être exécutées ?
for ( var i = 0; i < 4; i++ ) {
// instructions
}
- 0 fois
- 1 fois
- 3 fois
- 4 fois
Combien de fois les instructions vont-elles être exécutées ?
for ( var i = 3; i >= 1; i-- ) {
// instructions
}
- 0 fois
- 1 fois
- 3 fois
- 4 fois
Algo / Boucles - Code
Implémenter un programme de moins de 4 lignes qui affiche 50 fois 'Bonjour!'
dans la console. Respecter les conventions et règles d'indentation vues en cours.
Fonctions - QCM
function maFonction(param) {
return param + 2;
}
Ceci est:
- un appel de fonction
- une définition de fonction
- une affectation de fonction
- une fonction qui ne fonctionne pas
maFonction(4);
Ceci est:
- un appel de fonction
- une définition de fonction
- une affectation de fonction
- une fonction qui ne fonctionne pas
// cette fonction concatène un zéro à la fin de la valeur passée en paramètre
function maFonction(param) {
return param + '0';
}
Comment savoir si cette fonction fonctionne bien ? (c.a.d. sans bug)
- il suffit de la copier-coller dans la console
- il faut taper maFonction dans la console
- vérifier que le test passe: maFonction(1) === '10';
- vérifier que maFonction(1) renvoie bien true
Supposons que nous avons défini une fonction doubler()
qui retourne le double du nombre passé en paramètre, lors de son appel.
Que se passe-t-il si on exécute l'instruction suivante:
var maVariable = doubler(3);
- le résultat va être affecté à maVariable
- le résultat va s'afficher dans la console
- maVariable contient la définition de la fonction
- maVariable contient l'appel de la fonction
Fonctions - Code
Définir une fonction soustraire
qui retourne le résultat de la soustraction a - b
, a
et b
étant des paramètres de cette fonction.
Respecter les conventions et règles d'indentation vues en cours.
Définir une fonction somme
qui retourne la somme des trois nombres passés en paramètres.
Exemple d'appel: somme(1, 3, -2);
doit retourner 2
.
Définir une fonction repeter
qui affiche n
fois 'Bonjour!'
dans la console, puis qui retourne n
, n
étant un paramètre de cette fonction.
Respecter les conventions et règles d'indentation vues en cours.
Définir une fonction sommeIntervalle
qui retourne la somme de tous les nombres entiers compris entre les nombres premier
et dernier
(compris) passés en paramètres.
Exemple d'appel: sommeIntervalle(2, 5);
doit retourner 14
(résultat de 2 + 3 + 4 + 5
).
Tableaux - Code
Créez une variable nombres
de type tableau et contenant les nombres 1
, 2
et 3
.
Vous disposez d'une variable fruits
contenant un tableau de chaînes de caractères.
Saisissez le code JavaScript pour créer une variable troisieme
et lui affecter la valeur du 3ème élément de ce tableau.
Vous disposez d'une variable fruits
contenant un tableau de chaînes de caractères.
Saisissez le code JavaScript permettant de retirer le dernier élément de ce tableau, et d'afficher la valeur de cet élément dans la console.
Définir une fonction tableauContient
qui prend deux paramètres:
tableau
: un tableau de chaînes de caractèreschaine
: une chaîne de caractères
...et retourne:
false
si la valeurchaine
n'a pas été trouvée dans le tableautableau
,- ou le premier indice (à partir de 0) auquel a été trouvé la valeur
chaine
dans le tableautableau
.
Exemples d'appels:
tableauContient(['a', 'b', 'c'], 'b');
doit retourner1
.tableauContient(['a', 'b', 'c'], 'd');
doit retournerfalse
.
v2.4.0: Robustness and adaptivity
- Change: question numbering is now global: no more id collisions
- Feature: no longer limited to 1 quizz + 1 code exercises
- Feature: variants are applied on solutions too, when displayed
- Feature: custom exercise titles using Markdown (optional)
- Feature: new auto-evaluation backend:
auto-eval
(on submit only) - Feature:
npm test
tests the evaluation on provided exercise solutions - Feature:
_studentCode
string can be used for code evaluation tests - Bug fix: allow evaluation code on same line of
_runStudentCode()
- Bug fix: better browser support for Firefox and Safari
- Optimization: disabled Polymer routing, buggy and useless
- Refactoring: renamed classes and scripts, more self-explanatory
js-revisions: Exercices auto-évalués / compilation de QCMs et exercices du 1er semestre
Les bases - QCM
Comment ouvrir la console JavaScript dans Google Chrome ?
- En tapant "console"
- En appelant le prof
- En demandant gentiment à Siri
- En pressant Cmd-Alt-J ou Ctrl-Shift-J
Que retourne typeof
quand il est appliqué sur "bonjour"
?
"string"
string
"object"
undefined
Types de valeurs en JavaScript. Quel est l'intrus ?
- string
- boolean
- decimal
- number
Comment créer une variable en JavaScript ?
- maVariable;
- var maVariable;
- x = 0;
- maVariable = 'bonjour';
Quel est le type de cette variable:
var maVariable = 3.2;
- string
- number
- decimal
- boolean
Quel est le type de cette variable:
var maVariable = '3.2';
- string
- number
- decimal
- boolean
Comment afficher la valeur d'une variable appelée maVariable
depuis la console ?
- maVariable;
- var maVariable;
- maVariable?
- show maVariable
Comment changer la valeur d'une variable existante ? (déjà créée)
- var maVariable = 4;
- maVariable = 4;
- maVariable(4);
- 4 = maVariable;
Si j'ai créé une variable dont la valeur est un nombre, que se passera-t-il si je lui affecte ensuite une chaine de caractères ?
- erreur, car le type est différent.
- erreur, car on ne peut pas changer la valeur d'une variable.
- la valeur de la variable va être remplacée par la chaine de caractères.
- les deux valeurs vont être concaténées.
En respectant les conventions indiquées en cours, quelle affectation faut-il exécuter pour que J'ai tout compris !
s'affiche à l'écran ?
alert(message);
- message = "J'ai tout compris !";
- message = 'J"ai tout compris !';
- message = 'J'ai tout compris !';
- message = J'ai tout compris !
Conditions - QCM
Que vaut cette expression de comparaison de valeur ?
3.2 === '3.2'
- true
- false
- undefined
- c'est une affectation
Quelle section va être exécutée, si on exécute le code suivant ?
var nb = 2;
if (nb === 1) {
// A
} else {
// B
}
- A
- B
- A et B
- aucune
Quelle section de va être exécutée, si on exécute le code suivant ?
var nb = 2;
if (nb === 2) {
// A
} else if (nb > 1) {
// B
} else {
// C
}
- A
- B
- A et B
- A, B et C
À quoi ressemblerait l'arbre de décision correspondant à ce code:
var reponse = prompt('as-tu faim ?')
if (reponse === 'oui') {
var reponse2 = prompt('aimes-tu les burgers ?');
if (reponse2 === 'oui') {
alert('alors je t\'en offre un !');
} else {
alert('dommage !');
}
} else {
alert('désolé');
}
- une boîte et deux branches
- deux boîtes de même niveau
- une boîte de niveau 1, et une boîte de niveau 2
- une boîte et trois branches
Pourquoi faut-il éviter d'utiliser les opérateurs ==
et !=
?
- car il vaut mieux utiliser une affectation
=
- car ils sont trop stricts
- car ils sont trop laxistes
- var
===
et!==
sont plus lisibles
Conditions - Code
Implémenter une condition qui affecte 'egal'
à une variable resultat
seulement si une autre variable nombre
vaut strictement 4
. Indenter correctement.
Implémenter un chat-bot à partir de l'arbre de décision suivant:
Comme vu et pratiqué en cours:
- Les questions posées par l'ordinateur sont représentées par des rectangles, et sont à implémenter à l'aide de la fonction
prompt()
. - Les réponses comprises par l'ordinateur sont écrites à côté de chaque branche, et sont à implémenter à l'aide de conditions.
- Les messages à afficher par l'ordinateur sont représentés par des cercles, et sont à implémenter à l'aide de la fonction
alert()
.
Vous serez noté(e) sur:
- le respect à la lettre du texte des questions et des réponses (espaces, accents, et majuscules/minuscules compris).
- le respect des règles d'indentation et autres conventions vues en cours. (ex: 2 espaces par niveau d'indentation)
- le bon fonctionnement de votre code, sans erreurs, depuis la console JavaScript de Google Chrome, pour chacun des cas illustrés dans l'arbre de décision.
Algo / Boucles - QCM
Combien de fois les instructions vont-elles être exécutées ?
for ( var i = 0; i < 4; i++ ) {
// instructions
}
- 0 fois
- 1 fois
- 3 fois
- 4 fois
Combien de fois les instructions vont-elles être exécutées ?
for ( var i = 3; i >= 1; i-- ) {
// instructions
}
- 0 fois
- 1 fois
- 3 fois
- 4 fois
Algo / Boucles - Code
Implémenter un programme de moins de 4 lignes qui affiche 50 fois 'Bonjour!'
dans la console. Respecter les conventions et règles d'indentation vues en cours.
Fonctions - QCM
function maFonction(param) {
return param + 2;
}
Ceci est:
- un appel de fonction
- une définition de fonction
- une affectation de fonction
- une fonction qui ne fonctionne pas
maFonction(4);
Ceci est:
- un appel de fonction
- une définition de fonction
- une affectation de fonction
- une fonction qui ne fonctionne pas
// cette fonction concatène un zéro à la fin de la valeur passée en paramètre
function maFonction(param) {
return param + '0';
}
Comment savoir si cette fonction fonctionne bien ? (c.a.d. sans bug)
- il suffit de la copier-coller dans la console
- il faut taper maFonction dans la console
- vérifier que le test passe: maFonction(1) === '10';
- vérifier que maFonction(1) renvoie bien true
Supposons que nous avons défini une fonction doubler()
qui retourne le double du nombre passé en paramètre, lors de son appel.
Que se passe-t-il si on exécute l'instruction suivante:
var maVariable = doubler(3);
- le résultat va être affecté à maVariable
- le résultat va s'afficher dans la console
- maVariable contient la définition de la fonction
- maVariable contient l'appel de la fonction
Fonctions - Code
Définir une fonction soustraire
qui retourne le résultat de la soustraction a - b
, a
et b
étant des paramètres de cette fonction.
Respecter les conventions et règles d'indentation vues en cours.
Définir une fonction somme
qui retourne la somme des trois nombres passés en paramètres.
Exemple d'appel: somme(1, 3, -2);
doit retourner 2
.
Définir une fonction repeter
qui affiche n
fois 'Bonjour!'
dans la console, puis qui retourne n
, n
étant un paramètre de cette fonction.
Respecter les conventions et règles d'indentation vues en cours.
Définir une fonction sommeIntervalle
qui retourne la somme de tous les nombres entiers compris entre les nombres premier
et dernier
(compris) passés en paramètres.
Exemple d'appel: sommeIntervalle(2, 5);
doit retourner 14
(résultat de 2 + 3 + 4 + 5
).
Tableaux - Code
Créez une variable nombres
de type tableau et contenant les nombres 1
, 2
et 3
.
Vous disposez d'une variable fruits
contenant un tableau de chaînes de caractères.
Saisissez le code JavaScript pour créer une variable troisieme
et lui affecter la valeur du 3ème élément de ce tableau.
Vous disposez d'une variable fruits
contenant un tableau de chaînes de caractères.
Saisissez le code JavaScript permettant de retirer le dernier élément de ce tableau, et d'afficher la valeur de cet élément dans la console.
Définir une fonction tableauContient
qui prend deux paramètres:
tableau
: un tableau de chaînes de caractèreschaine
: une chaîne de caractères
...et retourne:
false
si la valeurchaine
n'a pas été trouvée dans le tableautableau
,- ou le premier indice (à partir de 0) auquel a été trouvé la valeur
chaine
dans le tableautableau
.
Exemples d'appels:
tableauContient(['a', 'b', 'c'], 'b');
doit retourner1
.tableauContient(['a', 'b', 'c'], 'd');
doit retournerfalse
.