javascript tome xv - Arrays en JavaScript

Transcription

javascript tome xv - Arrays en JavaScript
LES ARRAYS ( T a b l e a u x )
Po u r D é b u t a n t e n
J AVA S C R I P T (Programmation Internet) V O L . V
J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga
+243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818
La dernière révision de ce texte est disponible sur CD.
Array est l’objet global (constructeur) utilisé pour créer des
tableaux (objets de haut-niveau, en termes de complexité
homme-machine, semblables à des listes).
Syntaxes :
[el0, el1, ..., elN]
new Array(el0, el1[, ...[, elN]])
new Array(arrayLength) //0 à 232-1
Array . of ( )
Array . from ( )
<script type="text/javascript"> "use strict";
let r;
r = Array.of(1);
console.log(typeof r);
r[2]=28;
console.log(r);
// =>
[1]
r = Array.of(10);
console.log(typeof r);
r[2]=29;
console.log(r);
// =>
[10]
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
r = Array.of(78, 90, 25, 33, 56, 36, 39, 96, 93, 35);
console.log(typeof r);
r[11]=30;
console.log(r);
// => (10) [78, 90, 25, 33, 56, 36, 39, 96, 93, 35]
r = Array.of("jour",23, "annee",2018, "mois",11,
{hr:8 , min:37});
console.log(typeof r);
r[8]=31;
console.log(r);
// => (10) [78, 90, 25, 33, 56, 36, 39, 96, 93, 35]
</script>
Firefox Quantum 64.0b13 :
Yandex Version 18.11.1.385 beta :
ARRAYS en JavaScript
2 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Dans le code qui suit, tous les éléments de deux Arrays [identiques] sont automatiquement parcourus dans chacune des
deux, du premier au dernier et comparés l’un avec les autres
de l’autre Array.
Un peu de comparaison matricielle !
[1,2].forEach(x => [1,2].forEach(y =>
console.log(`x (${x}) == y (${y}) ? ${x==y}`)))
ARRAYS en JavaScript
3 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
La comparaison directe de deux Arrays ne suit pas la procédure habituelle.
« Array1 == Array2 » ou « Array1 === Array2 » comparent
les adresses-mémoire et non les contenus :
<script type="text/javascript"> "use strict";
let a1 = Array.from(new Set([1,2,3]));
let a2 = Array.from(new Set([1,2,3]));
console.log(a1==a1);
// true
// La même référence (adresse-mémoire)
console.log(a1===a1);
// true
// La même référence (adresse-mémoire)
console.log(a1==a2); // false
// Références (adresses-mémoire) différentes.
console.log(a1===a2); // false
// Références (adresses-mémoire) différentes.
</script>
D’ordinaire, on accède aux éléments d’une Array par indexation en comptant à partir de zéro. Pour une Array de 5 éléments l’indexation va de 0 à 4 (taille de l’Array [5] – 1) :
<script type="text/javascript">
let ar = [34, 20, 90, 41, 74];
ARRAYS en JavaScript
4 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log(ar[0], ar[3], ar[5]);
</script>
Comme vous l’avez vu, JavaScript n’interdit pas d’accéder
(lire ou écrire) un élément qui en dehors de sa taille, et écrire
sur un élément hors borne élargit automatiquement la taille de
l’Array en conformément.
<script type="text/javascript">
let ar = [34, 20, 90, 41, 74];
console.log(ar[0], ar[3], ar[5]);
// 34 41 undefined
console.log(ar.length);
ar[10] = "Disu";
console.log(ar.length);
// 5
// 11
console.log(ar[0], ar[3], ar[10]);
// 34 41 Disu
</script>
« self » (« window ») permet dans le code qui suit, de créer
une Array d’indices et de « noms de variables » à partir des
valeurs littérales des éléments d’Array qui doivent être des
chaînes de caractères alphabétiques et jamais numériques, et
chacun de ces nouveaux « noms de variables » prend la valeur de l’indice de cette chaîne dans l’Array. Tout cela est par
la suite ajouté aux propriétés de « window » :
<script type="text/javascript"> "use strict";
let ar, t;
for (let i of (ar =
["lola", "alamuki", "mbote", "etuci", "daba"])
) {
self[i] = ar.indexOf(i);
self[i+"_10"] = i;
ARRAYS en JavaScript
5 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
}
console.log(daba, mbote, etuci, alamuki, lola);
console.log(self);
var array2 =
["etuci", "alamuki", "daba", "lola", "mbote"]
t="";
for(let i of array2)
t+= array2[self[i]] + "=" + self[i] + " | "
console.log(t)
t="";
for(let i of array2)
t+= ar[self[i]] + "=" + self[i] + " | "
console.log(t)
</script>
ARRAYS en JavaScript
6 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Quelques manipulations d’éléments d’Array:
<script type="text/javascript">
console.dir(a = new Array(3));
// Tableau à 3 éléments non définis.
console.dir(a[1]); // undefined
console.dir(a = new Array(1,2,3));
// Tableau à trois éléments : 1, 2 et 3
console.dir(a[1]); // 2
console.dir(a = [1,2,3]);
// Tableau à trois éléments : 1, 2 et 3
console.dir(a[1]); // 2
</script>
<script type="text/javascript"> "use strict";
let a;
console.dir(a = new Array(74, 53, 81));
// Tableau à trois éléments initialisés :
// Array(3) [ 74, 53, 81 ]
console.dir(a[1]);
// 53
console.dir(a = [74, 53, 81]);
// Tableau à trois éléments initialisés :
// Array(3) [ 1, 2, 3 ]
console.dir(a[1]);
// 53
ARRAYS en JavaScript
7 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.dir(a = new Array(3));
// Tableau à 3 éléments non définis.
// Array(3) [ <3 empty slots> ]
console.dir(a[1]);
// undefined
console.dir(a = new Array(0));
// Tableau à 0 élément (vide).
// Array []
console.dir(a[1]); // undefined
console.dir(a = new Array());
// Tableau à 0 élément (vide).
// Array []
console.dir(a[1]); // undefined
console.dir(a = new Array([
[62, 38, 52] , 47 , [43, 78],
`string` , {un:1 , 2:"deux"}
]));
// Tableau unidimensionneml à 5 éléments dont le pre-mier
// élément est une Array à 3 éléments initialisés,
// le deuxième élément est le scalaire 47,
// le 3è élément est une Array à 2 éléments initia-lisés.
// le quatrième élément est une chaîne de caractères
// contenant 6 caractères.
// le cinquième élément est un « littral d'objet (hash) »
// initialisé à 2 éléments ayant chacun 1 paire «
clé:valeur».
// Array [ (5) […] ]
console.dir(a[0]);
"string", {…} ]
console.dir(a[1]);
// Array(5) [ (3) […], 47, (2) […],
// undefined
console.dir(a[0][0]);
console.dir(a[0][1]);
console.dir(a[0][2]);
console.dir(a[0][3]);
//
//
//
//
ARRAYS en JavaScript
Array(3) [ 62, 38, 52 ]
47
Array [ 43, 78 ]
string
8 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
console.dir(a[0][4]);
JavaScript Tome-V
// Object { 2: "deux", un: 1 }
// console.dir(a[1][0]);
// TypeError: a[1] is undefined;
// can't access element at index 0
// console.dir(a[1][1]);
// TypeError: a[1] is undefined;
// can't access element at index 1
console.dir(a = new Array(
[[62, 38] , 47] ,
[`abc` , {un:1 , 2:"deux"}],
[{jour:11 , 1953:"année"}]
));
// Tableau bidimensionneml à 3 éléments dans la deu-xième
// dimension et dont le premier [dans la deuxième dimension]
// est une Array [dans la première dimension] et contenant
// une array à 2 éléments initialisés et dont le pre-mier
// esg aussi une array et le deuxième un scalaire,
// le deuxième élément [de la deuxième dimension] est aussi
// une array iniialisée contenant un string et un objet
hash,
// le troisième élément [de la deuxième dimension] est
// aussi une Array dans la première dimension ne contenant
// qu'un seul élément (hash object).
//
// Mais c'est préférable qu'une array bidimensionnelle
// soit bien structurée dans le sens que les
// éléments d'un même indexage soient de même nature.
//
// Array(3) [ (2) […], (2) […], (1) […] ]
console.dir(a[0]);
console.dir(a[1]);
// Array [ (2) […], 47 ]
// Array [ "abc", {…} ]
console.dir(a[0][0]);
console.dir(a[0][1]);
console.dir(a[0][2]);
// Array [ 62, 38 ]
// 47
// undefined
ARRAYS en JavaScript
9 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.dir(a[1][0]);
console.dir(a[1][1]);
console.dir(a[1][2]);
// abc
// Object { 2: "deux", un: 1 }
// undefined
console.dir(a[2][0]);
}
console.dir(a[2][1]);
console.dir(a[2][2]);
// Object { 1953: "année", jour: 11
// undefined
// undefined
// console.dir(a[3][0]);
// TypeError: a[3] is undefined;
// can't access element at index 0
console.dir(a = new Array(
[[62, 38] , [47, "chaîne1"]] ,
[[`abc`] , [{un:1 , 2:"deux"}, 82]],
[[{jour:11 , 1953:"année"}],
[
[83, 30],[22, 62, [44, 28, 99]]
]
]
));
// Tableau tridimensionneml à 3 éléments dans la troisième
// dimension a[0], a[1], a[2].
//
// Mais c'est préférable qu'une array multidimension-nelle
// soit bien structurée dans le sens que les
// éléments d'un même indexage soient de même nature.
//
// Array(3) [ (2) […], (2) […], (1) […] ]
console.dir(a[0]);
// Array [ (2) […], (2) […] ]
console.dir(a[0][0]);
console.dir(a[0][1]);
// Array [ 62, 38 ]
// Array [ 47, "chaîne1" ]
console.dir(a[0][0][0]);
console.dir(a[0][0][1]);
console.dir(a[0][1][0]);
console.dir(a[0][1][1]);
ARRAYS en JavaScript
//
//
//
//
62
38
47
chaîne1
10 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
console.dir(a[0][0][0][0]);
console.dir(a[1]);
// Array [ (1) […], (2) […] ]
console.dir(a[1][0]);
console.dir(a[1][1]);
// Array [ "abc" ]
// Array [ {…}, 82 ]
console.dir(a[1][0][0]);
console.dir(a[1][0][1]);
console.dir(a[1][1][0]);
console.dir(a[1][1][1]);
console.dir(a[2]);
JavaScript Tome-V
// undefined
//
//
//
//
abc
undefined
Object { 2: "deux", un: 1 }
82
// Array [ (1) […], (2) […] ]
console.dir(a[2][0]);
console.dir(a[2][1]);
console.dir(a[2][2]);
// Array [ {…} ]
// Array [ (2) […], (3) […] ]
// undefined
console.dir(a[2][0][0]);
11 }
console.dir(a[2][0][1]);
console.dir(a[2][1][0]);
console.dir(a[2][1][1]);
console.dir(a[2][1][2]);
// Object { 1953: "année", jour:
//
//
//
//
console.dir(a[2][1][0][0]);
console.dir(a[2][1][0][1]);
console.dir(a[2][1][1][0]);
console.dir(a[2][1][1][1]);
console.dir(a[2][1][1][2]);
undefined
Array [ 83, 30 ]
Array(3) [ 22, 62, (3) […] ]
undefined
//
//
//
//
//
console.dir(a[2][1][1][2][0]);
console.dir(a[2][1][1][2][1]);
console.dir(a[2][1][1][2][2]);
console.dir(a[3]);
83
30
22
62
Array(3) [ 44, 28, 99 ]
// 44
// 28
// 99
// undefined
// console.dir(a[3][0]);
// TypeError: a[3] is undefined;
// can't access element at index 0
console.dir(a = [[10,20,30]]);
// Tableau bidimensionnel
ARRAYS en JavaScript
11 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
//
JavaScript Tome-V
Array [ (3) […] ]
console.dir(a[0]); //
console.dir(a[0][0]);
console.dir(a[0][1]);
console.dir(a[0][2]);
Array(3) [ 10, 20, 30 ]
// 10
// 20
// 30
console.dir(a = [...[10,20,30]]);
// Tableau unidimensionnel
// Array(3) [ 10, 20, 30 ]
console.dir(a[0]);
console.dir(a[1]);
console.dir(a[2]);
// 10
// 20
// 30
console.dir(a[0][0]);
// undefined
console.dir(a = [80, 92,...[10,...[20,30]]]);
// Tableau unidimensionnel
// Array(5) [ 80, 92, 10, 20, 30 ]
console.dir(a[0]);
console.dir(a[1]);
console.dir(a[2]);
console.dir(a[3]);
console.dir(a[4]);
//
//
//
//
//
console.dir(a[0][0]);
80
92
10
20
30
// undefined
let ar = [10,...[20,30]];
console.dir(a = [80, 92,...ar]);
// Tableau unidimensionnel
// « ar » est la suite d'une array.
// Array(5) [ 80, 92, 10, 20, 30 ]
console.dir(a[0]);
console.dir(a[1]);
console.dir(a[2]);
console.dir(a[3]);
console.dir(a[4]);
//
//
//
//
//
80
92
10
20
30
let arr = [10,...[20,30]];
console.dir(a = [80, 92, arr]);
// Tableau bidimensionnel,
ARRAYS en JavaScript
12 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
// « arr » est une array dans une array.
// Array(3) [ 80, 92, (3) […] ]
console.dir(a[0]); //
console.dir(a[1]); //
console.dir(a[2]); //
console.dir(a[3]); //
console.dir(a[4]); //
console.dir(a[2][0]);
console.dir(a[2][1]);
console.dir(a[2][2]);
80
92
Array(3) [ 10, 20, 30 ]
undefined
undefined
// 10
// 20
// 30
let arra = [10, [20,30]];
console.dir(a = [80, 92, arra]);
// Tableau tridimensionnel,
// [20,30]est une array dans « arr » qui est
// aussi une array dans une array.
// Array(3) [ 80, 92, (2) […] ]
console.dir(a[0]); //
console.dir(a[1]); //
console.dir(a[2]); //
console.dir(a[3]); //
console.dir(a[4]); //
console.dir(a[2][0]);
console.dir(a[2][1]);
console.dir(a[2][2]);
80
92
Array [ 10, (2) […] ]
undefined
undefined
// 10
// Array [ 20, 30 ]
// undefined
console.log([...10]); // TypeError: 10 is not iterable
</script>
ARRAYS en JavaScript
13 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
ARRAYS en JavaScript
JavaScript Tome-V
14 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Le Destructuring (destructuration) : On copie les valeurs
des éléments de l’Array de droite sur les éléments de l’Array
de gauche. Les éléments éventuellement en surplus dans
l’Array de droite ne sont pas injectés dans l’Array de gauche.
<script type="text/javascript">
var [red, green, blue] =
[0xFF0000, 0x00FF00];
console.log([red, green, blue]);
console.dir(Object.entries([red, green, blue]));
var [red, green, blue] =
[0xFF0000, 0x00FF00, 0x0000FF];
console.log([red, green, blue]);
console.dir(Object.entries([red, green, blue]));
var [red, green, blue] =
[0xFF0000, 0x00FF00, 0x0000FF, 0x000];
console.log([red, green, blue]);
console.dir(Object.entries([red, green, blue]));
</script>
ARRAYS en JavaScript
15 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Destructuration d’une Array avec « . map ( ) » :
<script type="text/javascript"> "use strict";
var prémisse = ["zero", "un", "deux", "trois"];
// Array source.
var [zero, un, deux] = prémisse.map((v) => v);
// Destructuration.
console.log(zero, un, deux);
console.log('window[prémisse[0]]:',
window[prémisse[0]]);
console.log('window[prémisse[2]]:',
window[prémisse[2]]);
console.log('window[prémisse[1]]:',
window[prémisse[1]]);
console.log('window[zero]:',
window[prémisse[zero]]);
console.log('window[deux]:',
window[prémisse[deux]]);
console.log('window[un]:',
window[prémisse[un]]);
ARRAYS en JavaScript
16 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log("=".repeat(10));
var [zero, un, deux] =
prémisse.map((undefined, v) => v);
// Destructuration.
console.log(zero, un, deux);
console.log('window[prémisse[0]]:',
window[prémisse[0]]);
console.log('window[prémisse[2]]:',
window[prémisse[2]]);
console.log('window[prémisse[1]]:',
window[prémisse[1]]);
console.log('window[zero]:',
window[prémisse[zero]]);
console.log('window[deux]:',
window[prémisse[deux]]);
console.log('window[un]:',
window[prémisse[un]]);
console.log('window[0]:',
window[prémisse[0]]);
console.log('window[2]:',
window[prémisse[2]]);
console.log('window[1]:',
window[prémisse[1]]);
console.log("=".repeat(10));
var [zero, un, deux] =
prémisse.map((k, undefined, v) => v);
// Destructuration.
console.log(zero, un, deux);
console.log('window[prémisse[0]]:',
window[prémisse[0]]);
console.log('window[prémisse[2]]:',
window[prémisse[2]]);
console.log('window[prémisse[1]]:',
window[prémisse[1]]);
console.log('window[zero]:',
window[prémisse[zero]]);
console.log('window[deux]:',
window[prémisse[deux]]);
ARRAYS en JavaScript
17 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log('window[un]:',
window[prémisse[un]]);
console.log("=".repeat(10));
var [zero, un, deux] =
prémisse.map((k, c, undefined, v) => v);
// Destructuration.
console.log(zero, un, deux);
console.log('window[prémisse[0]]:',
window[prémisse[0]]);
console.log('window[prémisse[2]]:',
window[prémisse[2]]);
console.log('window[prémisse[1]]:',
window[prémisse[1]]);
console.log('window[zero]:',
window[prémisse[zero]]);
console.log('window[deux]:',
window[prémisse[deux]]);
console.log('window[un]:',
window[prémisse[un]]);
console.log("=".repeat(10));
console.log(prémisse);
</script>
ARRAYS en JavaScript
18 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Le Remplissage automatique d’une Array : On peut le faire
facilement avec un générateur. Dès que toute l’Array a été
parcourue, le générateur s’arrête automatiquement :
ARRAYS en JavaScript
19 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
<script type="text/javascript">
function* fGenerator() {
let i = 10;
while (true) yield i++;
};
let [ngai, ye, mosusu] = fGenerator();
console.log(ngai, ye, mosusu); // 10 11 12
let [a, b, c, d, e, f] = fGenerator();
console.log(a, b, c, d, e, f);
//
10 11 12 13 14 15
</script>
Notez que chaque Array pour laquelle la fonction génératrice est appelée [re]démarre sa série propre.
ARRAYS en JavaScript
20 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Propriétés de l’objet Array et de Array.prototype :
Avec
<script type="text/javascript">
console.log(Array)
</script>
Ou pour le prototype de « Array » :
<script type="text/javascript">
console.log ( Array.prototype )
</script>
Ou pour les noms des Descripteurs de « Array » :
<script type="text/javascript">
console.log(Object.getOwnPropertyNames(Array))
</script>
Ou pour les noms des Descripteurs du prototype de « Array » :
<script type="text/javascript">
console.log(Object.getOwnPropertyNames(Array.prototype))
</script>
Ou pour les Descripteurs de « Array » :
<script type="text/javascript">
console.log(Object. getOwnPropertyDescriptors(Array))
</script>
Ou pour le prototype :
<script type="text/javascript">
Object. getOwnPropertyDescriptors (Array .prototype)
</script>
ARRAYS en JavaScript
21 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Illustrations :
Avec Firefox Quantum 62.0.2 :
<script type="text/javascript">
console.log(Object.getOwnPropertyNames(Array))
</script>
// Array(6) [ "isArray", "concat", "lastIndexOf", "indexOf", "forEach", "map", "filter", "every", "some", "reduce", … ]
// […]
// 0: "isArray"
// 1: "concat"
// 2: "lastIndexOf"
// 3: "indexOf"
// 4: "forEach"
// 5: "map"
// 6: "filter"
// 7: "every"
// 8: "some"
// 9: "reduce"
// 10: "reduceRight"
// 11: "join"
// 12: "reverse"
// 13: "sort"
// 14: "push"
// 15: "pop"
// 16: "shift"
// 17: "unshift"
// 18: "splice"
// 19: "slice"
// 20: "from"
// 21: "of"
// 22: "prototype"
// 23: "length"
// 24: "name"
// length: 25
console.log(Object.getOwnPropertyNames(Array.prototype))
ARRAYS en JavaScript
22 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
// Array(30) [ "length", "toSource", "toString", "toLocaleString", "join", "reverse", "sort", "push", "pop",
"shift", … ]
// […]
// 0: "length"
// 1: "toSource"
// 2: "toString"
// 3: "toLocaleString"
// 4: "join"
// 5: "reverse"
// 6: "sort"
// 7: "push"
// 8: "pop"
// 9: "shift"
// 10: "unshift"
// 11: "splice"
// 12: "concat"
// 13: "slice"
// 14: "lastIndexOf"
// 15: "indexOf"
// 16: "forEach"
// 17: "map"
// 18: "filter"
// 19: "reduce"
// 20: "reduceRight"
// 21: "some"
// 22: "every"
// 23: "find"
// 24: "findIndex"
// 25: "copyWithin"
// 26: "fill"
// 27: "entries"
// 28: "keys"
// 29: "includes"
// 30: "constructor"
// length: 31
console.log(Object. getOwnPropertyDescriptors(Array))
// Object { isArray: {…}, concat: {…}, lastIndexOf: {…},
indexOf: {…}, forEach: {…}, map: {…}, filter: {…}, every: {…}, some: {…}, reduce: {…}, … }
ARRAYS en JavaScript
23 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
// {…}
// concat: Object { writable: true, enumerable: false,
configurable: true, … }
// every: Object { writable: true, enumerable: false,
configurable: true, … }
// filter: Object { writable: true, enumerable: false,
configurable: true, … }
// forEach: Object { writable: true, enumerable: false,
configurable: true, … }
// from: Object { writable: true, enumerable: false,
configurable: true, … }
// indexOf: Object { writable: true, enumerable: false,
configurable: true, … }
// isArray: Object { writable: true, enumerable: false,
configurable: true, … }
// join: Object { writable: true, enumerable: false,
configurable: true, … }
// lastIndexOf: Object { writable: true, enumerable:
false, configurable: true, … }
// length: Object { value: 1, writable: false, enumerable: false, … }
// map: Object { writable: true, enumerable: false, configurable: true, … }
// name: Object { value: "Array", writable: false, enumerable: false, … }
// of: Object { writable: true, enumerable: false, configurable: true, … }
// pop: Object { writable: true, enumerable: false, configurable: true, … }
// prototype: Object { writable: false, enumerable:
false, configurable: false, … }
// push: Object { writable: true, enumerable: false,
configurable: true, … }
// reduce: Object { writable: true, enumerable: false,
configurable: true, … }
// reduceRight: Object { writable: true, enumerable:
false, configurable: true, … }
// reverse: Object { writable: true, enumerable: false,
configurable: true, … }
// shift: Object { writable: true, enumerable: false,
configurable: true, … }
ARRAYS en JavaScript
24 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
// slice: Object { writable: true, enumerable: false,
configurable: true, … }
// some: Object { writable: true, enumerable: false,
configurable: true, … }
// sort: Object { writable: true, enumerable: false,
configurable: true, … }
// splice: Object { writable: true, enumerable: false,
configurable: true, … }
// unshift: Object { writable: true, enumerable: false,
configurable: true, … }
// Symbol(Symbol.species): Object { get: Symbol.species(), enumerable: false, configurable:
true, … }
console.log(Object.getOwnPropertyDescriptors (Array .prototype))
// Object { length: {…}, toSource: {…}, toString: {…},
toLocaleString: {…}, join: {…}, reverse: {…}, sort:
{…}, push: {…}, pop: {…}, shift: {…}, … }
// {…}
console.log(Object. getOwnPropertyDescriptors(Array))
Object { isArray: {…}, concat: {…}, lastIndexOf: {…}, indexOf: {…}, forEach: {…}, map: {…}, filter: {…}, every:
{…}, some: {…}, reduce: {…}, … }
{…}
concat: Object { writable: true, enumerable: false, configurable: true, … }
every: Object { writable: true, enumerable: false, configurable: true, … }
filter: Object { writable: true, enumerable: false, configurable: true, … }
forEach: Object { writable: true, enumerable: false, configurable: true, … }
ARRAYS en JavaScript
25 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
from: Object { writable: true, enumerable: false, configurable: true, … }
indexOf: Object { writable: true, enumerable: false, configurable: true, … }
isArray: Object { writable: true, enumerable: false, configurable: true, … }
join: Object { writable: true, enumerable: false, configurable: true, … }
lastIndexOf: Object { writable: true, enumerable: false,
configurable: true, … }
length: Object { value: 1, writable: false, enumerable:
false, … }
map: Object { writable: true, enumerable: false, configurable: true, … }
name: Object { value: "Array", writable: false, enumerable: false, … }
of: Object { writable: true, enumerable: false, configurable: true, … }
pop: Object { writable: true, enumerable: false, configurable: true, … }
prototype: Object { writable: false, enumerable: false,
configurable: false, … }
push: Object { writable: true, enumerable: false, configurable: true, … }
reduce: Object { writable: true, enumerable: false, configurable: true, … }
reduceRight: Object { writable: true, enumerable: false,
configurable: true, … }
ARRAYS en JavaScript
26 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
reverse: Object { writable: true, enumerable: false, configurable: true, … }
shift: Object { writable: true, enumerable: false, configurable: true, … }
slice: Object { writable: true, enumerable: false, configurable: true, … }
some: Object { writable: true, enumerable: false, configurable: true, … }
sort: Object { writable: true, enumerable: false, configurable: true, … }
splice: Object { writable: true, enumerable: false, configurable: true, … }
unshift: Object { writable: true, enumerable: false, configurable: true, … }
Symbol(Symbol.species): Object { get: Symbol.species(),
enumerable: false, configurable: true, … }
<prototype>: {…}
__defineGetter__: function __defineGetter__()
__defineSetter__: function __defineSetter__()
__lookupGetter__: function __lookupGetter__()
__lookupSetter__: function __lookupSetter__()
constructor: function Object()
hasOwnProperty: function hasOwnProperty()
isPrototypeOf: function isPrototypeOf()
propertyIsEnumerable: function propertyIsEnumerable()
toLocaleString: function toLocaleString()
toSource: function toSource()
toString: function toString()
valueOf: function valueOf()
console.log(Array)
// function Array()
// Array()
// concat: function concat()
ARRAYS en JavaScript
27 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
JavaScript Tome-V
every: function every()
filter: function filter()
forEach: function forEach()
from: function from()
indexOf: function indexOf()
isArray: function isArray()
join: function join()
lastIndexOf: function lastIndexOf()
length: 1
map: function map()
name: "Array"
of: function of()
pop: function pop()
prototype: Array []
push: function push()
reduce: function reduce()
reduceRight: function reduceRight()
reverse: function reverse()
shift: function shift()
slice: function slice()
some: function some()
sort: function sort()
splice: function splice()
unshift: function unshift()
Symbol(Symbol.species): undefined
console.log(Array.prototype)
// Array []
// []
// concat: function concat()
// constructor: function Array()
// copyWithin: function copyWithin()
// entries: function entries()
// every: function every()
// fill: function fill()
// filter: function filter()
// find: function find()
// findIndex: function findIndex()
// forEach: function forEach()
// includes: function includes()
// indexOf: function indexOf()
// join: function join()
ARRAYS en JavaScript
28 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
// keys: function keys()
// lastIndexOf: function lastIndexOf()
// length: 0
// map: function map()
// pop: function pop()
// push: function push()
// reduce: function reduce()
// reduceRight: function reduceRight()
// reverse: function reverse()
// shift: function shift()
// slice: function slice()
// some: function some()
// sort: function sort()
// splice: function splice()
// toLocaleString: function toLocaleString()
// toSource: function toSource()
// toString: function toString()
// unshift: function unshift()
// Symbol(Symbol.iterator): undefined
// Symbol(Symbol.unscopables): undefined
</script>
Avec Yandex Version 18.11.1.385 beta :
console.log(Object. getOwnPropertyDescriptors(Array))
1. {length: {…}, name: {…}, prototype: {…}, isArray: {…}, from: {…}, …}
1. from: {value: ƒ, writable: true, enumerable: false, configurabl
e: true}
2. isArray: {value: ƒ, writable: true, enumerable: false, configurable
: true}
3. length: {value: 1, writable: false, enumerable: false, configur
able: true}
4. name: {value: "Array", writable: false, enumerable: false, conf
igurable: true}
5. of: {value: ƒ, writable: true, enumerable: false, configurable:
true}
6. prototype: {value: Array(0), writable: false, enumerable: false, con
figurable: false}
ARRAYS en JavaScript
29 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
7. Symbol(Symbol.species): {get: ƒ, set: undefined, enumerable: false
, configurable: true}
8. __proto__: Object
Prototype :
1. prototype:
1. configurable: false
2. enumerable: false
3. value: Array(0)
1. concat: ƒ concat()
2. constructor: ƒ Array()
3. copyWithin: ƒ copyWithin()
4. entries: ƒ entries()
5. every: ƒ every()
6. fill: ƒ fill()
7. filter: ƒ filter()
8. find: ƒ find()
9. findIndex: ƒ findIndex()
10. flat: ƒ flat()
11. flatMap: ƒ flatMap()
12. forEach: ƒ forEach()
13. includes: ƒ includes()
14. indexOf: ƒ indexOf()
15. join: ƒ join()
16. keys: ƒ keys()
17. lastIndexOf: ƒ lastIndexOf()
18. length: 0
19. map: ƒ map()
20. pop: ƒ pop()
21. push: ƒ push()
22. reduce: ƒ reduce()
23. reduceRight: ƒ reduceRight()
24. reverse: ƒ reverse()
25. shift: ƒ shift()
26. slice: ƒ slice()
27. some: ƒ some()
28. sort: ƒ sort()
29. splice: ƒ splice()
30. toLocaleString: ƒ toLocaleString()
31. toString: ƒ toString()
32. unshift: ƒ unshift()
33. values: ƒ values()
34. Symbol(Symbol.iterator): ƒ values()
ARRAYS en JavaScript
30 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
35. Symbol(Symbol.unscopables): {copyWithin: true, entri
es: true, fill: true, find: true, findIndex: true
, …}
36. __proto__: Object
4. writable: false
5. __proto__: Object
Prototype du constructeur :
1. __proto__:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
Constructeur du prototype du constructeur :
1. __proto__:
1. constructor: ƒ Object()
1. arguments: (...)
2. assign: ƒ assign()
3. caller: (...)
4. create: ƒ create()
5. defineProperties: ƒ defineProperties()
6. defineProperty: ƒ defineProperty()
7. entries: ƒ entries()
8. freeze: ƒ freeze()
9. getOwnPropertyDescriptor: ƒ getOwnPropertyDescriptor()
10. getOwnPropertyDescriptors: ƒ getOwnPropertyDescriptors()
ARRAYS en JavaScript
31 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
JavaScript Tome-V
getOwnPropertyNames: ƒ getOwnPropertyNames()
getOwnPropertySymbols: ƒ getOwnPropertySymbols()
getPrototypeOf: ƒ getPrototypeOf()
is: ƒ is()
isExtensible: ƒ isExtensible()
isFrozen: ƒ isFrozen()
isSealed: ƒ isSealed()
keys: ƒ keys()
length: 1
name: "Object"
preventExtensions: ƒ preventExtensions()
prototype: {constructor: ƒ, __defineGetter__: ƒ, __def
ineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ,
…}
seal: ƒ seal()
setPrototypeOf: ƒ setPrototypeOf()
values: ƒ values()
__proto__: ƒ ()
[[Scopes]]: Scopes[0]
ARRAYS en JavaScript
32 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Quelques méthodes de l’objet « Array » :
Array . fnd ( ) :
<script type="text/javascript"> "use strict";
let t="";
let isSquare = (val) => {
t += val + " | ";
console.log(t);
return !(Math.sqrt(val) % 1);
};
console.log(
[30, 52, 47, 16, 30, 50, 39, 26, 79, 49]
.find(isSquare));
console.log{t);
</script>
<script type="text/javascript"> "use strict";
let t="";
let isSquare = (val) => {
t += val + " | ";
console.log(t);
return !(Math.sqrt(val) % 1);
};
console.log(
[76, 59, 19, 14, 60, 73, 46, 39, 80, 61]
.find(isSquare));
console.log(t);
</script>
ARRAYS en JavaScript
33 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Array . fndIndex ( ) :
<script type="text/javascript"> "use strict";
let t;
let isSquare = (val) => {
t += val + " | ";
console.log(t);
var res = !(Math.sqrt(val) % 1);
if(isNaN(val)) return NaN;
return res;
};
const a = [82, 44, 63, NaN, 14, 71, 42, 81, 73, 15];
console.log("a = ",a);
t="";
console.log("a.find(isSquare) = ",a.find(isSquare));
console.log(t);
t="";
console.log("a.findIndex(isSquare) =
",a.findIndex(isSquare));
console.log(t);
t="";
ARRAYS en JavaScript
34 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log("a.find(isNaN)) = ",a.find(isNaN));
t="";
console.log("a.findIndex(isNaN)) =
",a.findIndex(isNaN));
</script>
a = Array(10) [ 82, 44, 63, NaN, 14, 71, 42, 81, 73, 15 ]
test.html:12:4
82 |
82 | 44 |
82 | 44 | 63 |
82 | 44 | 63 | NaN
82 | 44 | 63 | NaN
82 | 44 | 63 | NaN
82 | 44 | 63 | NaN
82 | 44 | 63 | NaN
a.find(isSquare) =
82 | 44 | 63 | NaN
|
| 14
| 14
| 14
| 14
81
| 14
82 |
82 | 44 |
82 | 44 | 63 |
82 | 44 | 63 | NaN |
82 | 44 | 63 | NaN | 14
82 | 44 | 63 | NaN | 14
82 | 44 | 63 | NaN | 14
82 | 44 | 63 | NaN | 14
a.findIndex(isSquare) =
82 | 44 | 63 | NaN | 14
| 71 | 42 | 81 |
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:15:4
test.html:16:4
|
|
|
|
7
|
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:5:8
test.html:19:4
test.html:20:4
|
| 71 |
| 71 | 42 |
| 71 | 42 | 81 |
71 |
71 | 42 |
71 | 42 | 81 |
71 | 42 | 81 |
a.find(isNaN)) = NaN
a.findIndex(isNaN)) = 3
test.html:23:4
test.html:26:4
Array . splice ( ) :
<script type="text/javascript"> "use strict";
var spliced, copy, arr=[45,33,22,11,44,55,75,27];
// Créer copie individuelle de arr
ARRAYS en JavaScript
35 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
copy=arr.map(x=>x)
var remIdxSplice = (list,idx) => {
// Retirer 1 élément à partir de l'index idx
spliced=list.splice(idx,1);
return list; // Retourne la nouvelle copy.
}
console.log(arr); // Afficher l'Array initiale
console.log(copy); // Afficher la copy initiale
// Retirer 1 élément de copy à partir de l'index 3
var ret=remIdxSplice(copy,3);
console.log(arr); // Afficher l'Array initiale
console.log(copy); // Afficher la nouvelle copy
console.log(ret) // Afficher résultat de splice()
console.log(spliced) // Afficher l'élément retiré
console.log(arr) // Afficher de nouveau l'Array initiale
console.log(arr.splice(3)) // Afficher splice de arr
console.log(arr) // Afficher arr splicée
</script>
Exécution :
Array
Array
Array
Array
Array
Array
Array
Array
[
[
[
[
[
[
[
[
45, 33,
45, 33,
45, 33,
45, 33,
45, 33,
11 ]
45, 33,
11, 44,
22,
22,
22,
22,
22,
11,
11,
11,
44,
44,
44,
44,
44,
55,
55,
55,
55,
55,
75,
75,
75, 27 ]
75, 27 ]
75, 27 ]
27 ]
27 ]
22, 11, 44, 55, 75, 27 ]
55, 75, 27 ]
test.html:14:3
test.html:15:3
test.html:19:3
test.html:20:3
test.html:21:3
test.html:22:3
test.html:23:3
test.html:24:3
Array . splice ( ) et Array . delete ( ) 1 :
<script type="text/javascript"> "use strict";
var array = [2, 7, 5, 9, 10, 6, 5, 2, 5];
var index = array.indexOf(5);
console.log("initial = ")
console.log(array)
console.log("indexOf(5) = "+ index)
if (index > -1) {
var sres = array.splice(index, 3);
ARRAYS en JavaScript
36 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
}
console.log("Spliced = ")
console.log(sres)
console.log("Remained = ")
console.log(array)
</script>
Exécution :
initial = (9) [2, 7, 5, 9, 10, 6, 5, 2, 5]
indexOf(5) = 2
/// DELETED ///
Deleted = true
Remained = (9) [2, 7, empty, 9, 10, 6, 5, 2, 5]
/// SPLICED ///
Spliced = test.html:26 (3) [empty, 9, 10]
Remained = (6) [2, 7, 6, 5, 2, 5]
Array . splice ( ) et Array . delete ( ) 1 :
<script type="text/javascript">
var arrs = [2,9,2,3,2,2,7,2,2],
arrd = [2,9,2,3,2,2,7,2,2],
el=2;
"use strict";
console.log("Avant splice & delete = ");
console.log(arrs);
for(var i = arrs.length-1; i>=0 ;i--) {
if(arrs[i] === el) {
arrs.splice(i, 1);
delete arrd[i];
}
}
console.log("Après le splice = ");
console.log(arrs);
console.log("Après le delete = ");
ARRAYS en JavaScript
37 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log(arrd);
console.log('Après filtrage des undefined :');
console.log(arrd.filter(function(d){return typeof d !==
"undefined"}));
</script>
Exécution avec YANDEX :
Avant splice & delete =
(9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
Après le splice =
(3) [9, 3, 7]
Après le delete =
(9) [empty, 9, empty, 3, empty × 2, 7, empty × 2]
Après filtrage des undefined :
(3) [9, 3, 7]
Exécution avec FIREFOX :
Avant splice & delete = Array [ 9, 3, 7 ]
Après le splice =
Array [ 9, 3, 7 ]
Après le delete = Array [ <1 empty slot>, 9, <1 empty
slot>, 3, <2 empty slots>, 7, <2 empty slots> ]
Après filtrage des undefined :
Array [ 9, 3, 7 ]
Array . splice ( ) et Array . delete ( ) 2 :
<script type="text/javascript">
var s, arrays,arrayd,array;
arrays=[2,9,2,3,2,2,7,2,2];
arrayd=[2,9,2,3,2,2,7,2,2];
array =[2,9,2,3,2,2,7,2,2];
"use strict";
var cptr=0, flags, flagd, sp, dl, el=2;
console.log(array+" vs "+el);
ARRAYS en JavaScript
38 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
for(var i = array.length - 1; i >= 0; i--) {
console.log("\n("+ ++cptr+") >==========<");
console.log("INITIAL ARRAY = ");
console.log(array);
console.log("SPLICED ARRAY = ");
console.log(arrays);
console.log("DELETED ARRAY = ");
console.log(arrayd);
if(arrays[i] === el) {
sp=arrays.splice(i, 1);
flags=1;
} else {
sp="Nothing";
flags=0
}
s="===> arrays["+i+"] = "+
arrays[i]+" après SPLICE()";
console.log(sp+" a été spliced");
if(flags)console.log(s+" *****");
if(arrayd[i] === el) {
dl=delete arrayd[i];
flagd=1;
} else {
dl="Nothing";
flagd=0
}
s="===> arrayd["+i+"] = "+
arrayd[i]+" après delete ar-rayd["+i+"]";
console.log(dl);
console.log(" deleted");
if(flagd)console.log(s+" -----");
}
</script>
Exécution :
2,9,2,3,2,2,7,2,2 vs 2
(1) >==========<
ARRAYS en JavaScript
39 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
INITIAL ARRAY = (9) [2, 9,
SPLICED ARRAY = (9) [2, 9,
DELETED ARRAY = (9) [2, 9,
2 a été spliced
===> arrays[8] = undefined
true deleted
===> arrayd[8] = undefined
(2) >==========<
INITIAL ARRAY = (9) [2, 9,
SPLICED ARRAY = (8) [2, 9,
DELETED ARRAY = (9) [2, 9,
1]
2 a été spliced
===> arrays[7] = undefined
true deleted
===> arrayd[7] = undefined
JavaScript Tome-V
2, 3, 2, 2, 7, 2, 2]
2, 3, 2, 2, 7, 2, 2]
2, 3, 2, 2, 7, 2, 2]
après SPLICE() *****
après delete arrayd[8] ----2, 3, 2, 2, 7, 2, 2]
2, 3, 2, 2, 7, 2]
2, 3, 2, 2, 7, 2, undefined ×
après SPLICE() *****
après delete arrayd[7] -----
(3) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (7) [2, 9, 2, 3, 2, 2, 7]
DELETED ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, undefined × 2]
Nothing a été spliced
Nothing deleted
(4) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (7) [2, 9, 2, 3, 2, 2, 7]
DELETED ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, undefined × 2]
2 a été spliced
===> arrays[5] = 7 après SPLICE() *****
true deleted
===> arrayd[5] = undefined après delete arrayd[5] ----(5) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (6) [2, 9, 2, 3, 2, 7]
DELETED ARRAY = (9) [2, 9, 2, 3, 2, undefined × 1, 7, undefined × 2]
2 a été spliced
===> arrays[4] = 7 après SPLICE() *****
true deleted
===> arrayd[4] = undefined après delete arrayd[4] -----
ARRAYS en JavaScript
40 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
(6) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (5) [2, 9, 2, 3, 7]
DELETED ARRAY = (9) [2, 9, 2, 3, undefined × 2, 7, undefined × 2]
Nothing a été spliced
Nothing deleted
(7) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (5) [2, 9, 2, 3, 7]
DELETED ARRAY = (9) [2, 9, 2, 3, undefined × 2, 7, undefined × 2]
2 a été spliced
===> arrays[2] = 3 après SPLICE() *****
true deleted
===> arrayd[2] = undefined après delete arrayd[2] ----(8) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (4) [2, 9, 3, 7]
DELETED ARRAY = (9) [2, 9, undefined × 1, 3, undefined ×
2, 7, undefined × 2]
Nothing a été spliced
Nothing deleted
(9) >==========<
INITIAL ARRAY = (9) [2, 9, 2, 3, 2, 2, 7, 2, 2]
SPLICED ARRAY = (4) [2, 9, 3, 7]
DELETED ARRAY = (9) [2, 9, undefined × 1, 3, undefined ×
2, 7, undefined × 2]
2 a été spliced
===> arrays[0] = 9 après SPLICE() *****
true deleted
===> arrayd[0] = undefined après delete arrayd[0] -----
Array . filter ( ) :
<script type="text/javascript">
const filt = 7
let arr = [5, 7, 2, 7, 1, 7, 7]
var nar
ARRAYS en JavaScript
41 / 83
"use strict";
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
nar = arr.filter(elm => elm !== filt)
console.log(arr)
console.log("(filter!==7)")
console.log(nar)
nar = arr.filter(elm => elm === filt)
console.log(arr)
console.log("(filter===7)")
console.log(nar)
</script>
Exécution :
(7) [5, 7, 2, 7, 1, 7, 7]
(filter!==7)
(3) [5, 2, 1]
(7) [5, 7, 2, 7, 1, 7, 7]
(filter===7)
(4) [7, 7, 7, 7]
Array . includes (element , startPos ) :
<script type="text/javascript">
const ref = [2, 3, 5]
var narr;
let arr = [1, 2, 3, 4, 5, 3, 1]
console.log(arr)
console.log(ref)
"use strict";
narr = arr.filter(item => !ref.includes(item))
console.log(narr)
narr = arr.filter(item => ref.includes(item))
console.log(narr)
</script>
Exécution :
(7) [1, 2, 3, 4, 5, 3, 1]
(3) [2, 3, 5]
ARRAYS en JavaScript
42 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
(3) [1, 4, 1]
(4) [2, 3, 5, 3]
Array . map ( ) :
<script type="text/javascript">
"use strict";
var arr=[]
for(var k=0;k<10;k++)
arr.push(Math.round(Math.random()*1000))
var ret=arr.map(x => String(x).padStart(3,0))
console.log(ret)
console.log(String(ret))
console.log(ret.toString())
</script>
/*
Array [ "770", "047", "909", "240", "005", "574",
"891", "558", "823", "153" ]
test.html:8:2
770,047,909,240,005,574,891,558,823,153 test.html:9:2
770,047,909,240,005,574,891,558,823,153 test.html:10:2 */
<script type="text/javascript"> "use strict";
var arr=[]
for(var k=0;k<5;k++)
arr.push(Math.round(Math.random()*10000))
var ret=arr.map(x => String(x).padEnd(5,"^"))
console.log(ret)
console.log(String(ret))
console.log(ret.toString())
</script>
/*
Array [ "10^^^", "3103^", "5350^", "8623^",
"88^^^" ]
10^^^,3103^,5350^,8623^,88^^^
10^^^,3103^,5350^,8623^,88^^^
*/
ARRAYS en JavaScript
43 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Au lieu de la méthode “ push ”, on peut utiliser la longueur de l’array
“ length ” comme indice de l’élément cible d’entrée dans l’array.
<script type="text/javascript"> "use strict";
var arr=[]
for(var k=0;k<5;k++)
arr[arr.length]=Math.round(Math.random()*10000)
var ret=arr.map(x => String(x).padEnd(5,"^"))
console.log(ret)
console.log(String(ret))
console.log(ret.toString())
</script>
/*
Array [ "3321^", "7953^", "10^^^", "9682^", "2726^" ]
3321^,7953^,10^^^,9682^,2726^
3321^,7953^,10^^^,9682^,2726^
*/
Encore Array . map ( ) :
<script>
var srcArray = ["string", 2018, {}];
var destArray = srcArray.map(function(x) {
return typeof x; });
console.log("L'Array de destination = ");
console.log(destArray);
</script>
Ici le paramètre formel « x » est un itérateur des éléments de l’Array :
Exécution avec YANDEX :
L'Array de destination =
(3) ["string", "number", "object"]
En cliquant sur l’objet Array, on obtient.
1 (3) ["string", "number", "object"]
ARRAYS en JavaScript
44 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
A
B
C
D
E
JavaScript Tome-V
0:"string"
1:"number"
2:"object"
length:3
__proto__:Array(0)
On peut naturellement utiliser une fonction fléchée :
<script> "use strict";
var src = ["texte", 2018, {}];
var dest = src.map(src => typeof src);
console.log("L'Array de destination = ");
console.log(dest);
</script>
Exécution avec YANDEX :
L'Array de destination =
(3) ["string", "number", "object"]
0:"string"
1:"number"
2:"object"
length:3
__proto__ :Array(0)
Exécution avec FIREFOX :
L'Array de destination =
Array [ "string", "number", "object" ]
[…]
0: "string"
1: "number"
2: "object"
length: 3
__proto__: Array []
La méthode « Array . prototype . forEach ( ) » fonctionne exactement
de la même façon que la méthode « Array . map ( ) », sauf que Array .
ARRAYS en JavaScript
45 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
map ( ) retourne un tableau du résultat du traitment de chaque élément
du tableau de départ, alors que Array . forEach ( ) retourne undefined.
Les “ return ” n’arrêtent pas les boucles « forEach ( ) » ni « map ( ) ».
Pour pouvoir arrêter la boucle, utilisez les méthodes « every » ou
« some ».
Array . map ( ) :
<script type="text/javascript"> "use strict";
let arr = [-5.25, 5.25, -2.5, 2.5, -6.75, 6.75, -4, 4];
let res;
// Les return ici n’arrêtent pas map()
const round = arr.map(function(el, idx, array) {
res='él['+idx+'] :'+ el+" >= sonRound ["+
Math.round(el)+"]";
console.log(res);
// el >= son arrondi ?
if(el < Math.round(el)) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
console.log('=====');
const floor = arr.map(function(el, idx, array) {
res='él['+idx+'] :'+ el+" >= sonFloor ["+
Math.floor(el)+"]";
console.log(res);
// el >= son floor ?
if(el < Math.floor(el)) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
ARRAYS en JavaScript
46 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log('=====');
const ceil = arr.map(function(el, idx, array) {
res='él['+idx+'] :'+ el+" >= sonCeil ["+
Math.ceil(el)+"]";
console.log(res);
// el >= son arrondi ?
if(el < Math.ceil(el)) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
console.log('***** Math.round() :', round);
console.log('***** Math.floor() :', floor);
console.log('***** Math.ceil() :', ceil);
</script>
él[0]
él[1]
él[2]
él[3]
él[4]
él[5]
él[6]
él[7]
=====
él[0]
él[1]
él[2]
él[3]
él[4]
él[5]
él[6]
él[7]
=====
él[0]
él[1]
él[2]
él[3]
él[4]
:-5.25 >= sonRound [-5]
:5.25 >= sonRound [5]
:-2.5 >= sonRound [-2]
:2.5 >= sonRound [3]
:-6.75 >= sonRound [-7]
:6.75 >= sonRound [7]
:-4 >= sonRound [-4]
:4 >= sonRound [4]
¬
¥
¬
¬
¥
¬
¥
¥
:-5.25 >= sonFloor [-6]
:5.25 >= sonFloor [5]
:-2.5 >= sonFloor [-3]
:2.5 >= sonFloor [2]
:-6.75 >= sonFloor [-7]
:6.75 >= sonFloor [6]
:-4 >= sonFloor [-4]
:4 >= sonFloor [4]
¥
¥
¥
¥
¥
¥
¥
¥
:-5.25 >= sonCeil [-5]
:5.25 >= sonCeil [6]
:-2.5 >= sonCeil [-2]
:2.5 >= sonCeil [3]
:-6.75 >= sonCeil [-6]
¬
¬
¬
¬
¬
ARRAYS en JavaScript
47 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
él[5] :6.75 >= sonCeil [7]
¬
él[6] :-4 >= sonCeil [-4]
¥
él[7] :4 >= sonCeil [4]
¥
***** Math.round() :
Array[false, true, false, false, true, false, true, true]
***** Math.floor() :
Array [ true, true, true, true, true, true, true, true ]
***** Math.ceil() :
Array[false,false, false, false, false, false, true,true]
Array . forEach ( ) :
La même chose que ci-dessus, mais avec les absolues des opérandes.
<script type="text/javascript"> "use strict";
let arr = [-5.25, 5.25, -2.5, 2.5, -6.75, 6.75, -4, 4];
let res;
// Les return ici n’arrêtent pas forEach ()
const round = arr.forEach(function(el, idx, array) {
res='él['+idx+'] :'+ Math.abs(el)+" >= sonRound ["+
Math.abs(Math.round(el))+"]";
console.log(res);
// el >= son arrondi ?
if(Math.abs(el) < Math.abs(Math.round(el))) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
console.log('=====');
const floor = arr.forEach(function(el, idx, array) {
res='él['+idx+'] :'+ Math.abs(el)+" >= sonFloor ["+
Math.abs(Math.floor(el))+"]";
console.log(res);
// el >= son floor ?
if(Math.abs(el) < Math.abs(Math.floor(el))) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
ARRAYS en JavaScript
48 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log('=====');
const ceil = arr.forEach(function(el, idx, array) {
res='él['+idx+'] :'+ Math.abs(el)+" >= sonCeil ["+
Math.abs(Math.ceil(el))+"]";
console.log(res);
// el >= son arrondi ?
if(Math.abs(el) < Math.abs(Math.ceil(el))) {
console.log(" ¬")
return false;
}
console.log(" ¥")
return true;
});
console.log('***** Math.round() :', round);
console.log('***** Math.floor() :', floor);
console.log('***** Math.ceil() :', ceil);
</script>
él[0]
él[1]
él[2]
él[3]
él[4]
él[5]
él[6]
él[7]
=====
él[0]
él[1]
él[2]
él[3]
él[4]
él[5]
él[6]
él[7]
=====
él[0]
él[1]
él[2]
él[3]
él[4]
él[5]
él[6]
él[7]
*****
:5.25 >= sonRound [5]
:5.25 >= sonRound [5]
:2.5 >= sonRound [2]
:2.5 >= sonRound [3]
:6.75 >= sonRound [7]
:6.75 >= sonRound [7]
:4 >= sonRound [4]
:4 >= sonRound [4]
¥
¥
¥
¬
¬
¬
¥
¥
:5.25 >= sonFloor [6]
:5.25 >= sonFloor [5]
:2.5 >= sonFloor [3]
:2.5 >= sonFloor [2]
:6.75 >= sonFloor [7]
:6.75 >= sonFloor [6]
:4 >= sonFloor [4]
:4 >= sonFloor [4]
¬
¥
¬
¥
¬
¥
¥
¥
:5.25 >= sonCeil [5]
:5.25 >= sonCeil [6]
:2.5 >= sonCeil [2]
:2.5 >= sonCeil [3]
:6.75 >= sonCeil [6]
:6.75 >= sonCeil [7]
:4 >= sonCeil [4]
:4 >= sonCeil [4]
Math.round() : undefined
¥
¬
¥
¬
¥
¬
¥
¥
ARRAYS en JavaScript
49 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
***** Math.floor() : undefined
***** Math.ceil() : undefined
Leur syntaxe générale est la même, comme suit:
var nvTableau = arr.map(callback [, thisArg]);
Valeur de retour : Un nouveau tableau composé des images de la fonction de rappel (callback function).
var nvTableau = arr.forEach(callback [, thisArg]);
Valeur de retour : undefined.
var nvTableau = arr.some(callback [, thisArg]);
Valeur de retour : Ce que vous spécifiez.
var nvTableau = arr.every(callback [, thisArg]);
Valeur de retour : Ce que vous spécifiez.
callback
La fonction (callback) utilisée pour créer les éléments du nouveau tableau, elle utilise au maximum trois arguments :
1er valeurCourante : La valeur de l'élément du tableau, à traiter.
2e index (Facultatif) : L'index de l'élément traité par la fonction.
3e tableau (Facultatif) : Le tableau sur lequel on appelle la méthode
(map, forEach, some ou every).
thisArg (Facultatif)
ARRAYS en JavaScript
50 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
L’objet que doit pointer « this » lors de l'exécution de la fonction callback (par défaut, l'objet global de l'environnement =window dans un
navigateur).
<script type="text/javascript"> "use strict";
function Compute() {
this.add = 0;
this.cptr = 0;
}
Compute.prototype.ajouter = function(tableau) {
tableau.map(function(el) { // le callback
this.add += el*2; // Somme des doubles.
++this.cptr;
}, this); // this = l'objet Compute.
// ^---- l'argument this ici.
};
const iComp = new Compute();
const a=[2, -5, 9];
iComp.ajouter(a);
console.log("a=",a); // a= Array[3] [ 2, -5, 9 ]
console.log(iComp);
// Object { add: 12, cptr: 3 } [FIREFOX]
// ou
// Compute {add: 32, cptr: 3} [YANDEX]
console.log(iComp.cptr,"nbs sommant à", iComp.add);
// 3 "nbs sommant à" 12
</script>
Les méthodes map et forEach ne permettent pas de quitter la boucle, et
de ce fait parcourent l’intégralité de l’objet.. Si on souhaite quitter la
boucle sous certaines conditions, utilisez l’une des méthodes every ou
some.
<script type="text/javascript"> "use strict";
// LA MÉTHODE EVERY
var SEUIL_MAX = 12;
var v = [5, 2, -16, 14, 3, 18, 20];
var res;
ARRAYS en JavaScript
51 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
res = v.every(function(el, idx, array) {
console.log('arr['+idx+']=', el, "< ",
SEUIL_MAX,'?');
// arr[0]= 5 < 12 ?
// arr[1]= 2 < 12 ?
// arr[2]= -16 < 12 ?
// arr[3]= 14 < 12 ?
if (el >= SEUIL_MAX) {
return false;
}
return true;
});
console.log('res:', res); // res: false
// LA MÉTHODE SOME
res = v.some(function(el, idx, array) {
console.log('arr['+idx+']=', el, "< ",
SEUIL_MAX,'? QUITTER ?');
// arr[0]= 5 < 12 ? QUITTER ?
// arr[1]= 2 < 12 ? QUITTER ?
// arr[2]= -16 < 12 ? QUITTER ?
// arr[3]= 14 < 12 ? QUITTER ?
if (el >= SEUIL_MAX) {
return true;
}
return false;
});
console.log('res:', res); // res: true
</script>
La méthode Math . log10 ( ) idem avec toutes les méthodes ou fonctions
qui n’attendent TOUJOURS qu’un et un seul argument (donc dont
length = 1) : on n’a pas besoin de spécifier un premier argument, conteneur., et on utilise la fonction traiteuse directement comme callback,
sans le mot-clé return.
<script type="text/javascript"> "use strict";
var depart = [0, 1, 2, 3, 9, 10];
var apTTT = depart.map(Math.log10);
console.dir(apTTT);
// […]
ARRAYS en JavaScript
52 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
//
//
//
//
//
//
//
JavaScript Tome-V
0: -Infinity
1: 0
2: 0.3010299956639812
3: 0.47712125471966244
4: 0.9542425094393249
5: 1
length: 6
console.log(depart);
// Array(6) [ 0, 1, 2, 3, 9, 10 ]
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map(Number));
// Array(5) [ 0, 1.1, 220, 3e+30, 10 ]
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map( str => parseInt(str)));
// Array(5) [ 0, 1, 2, 3, 10 ]
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map(parseInt));
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map(parseInt,10));
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map(parseInt,2)); // Array(5) [0, NaN, NaN, NaN, 4]
function retIntB10(el) {
return parseInt(el, 10);
}
console.log(['0', 1.1, '2.2e2', '3e30', '10'].
map(retIntB10)); // Array(5) [0, 1, 2, 3, 10]
function retIntB5(el) {
return parseInt(el, 5);
}
console.log(['0', '60', '2.2e2', '3e30', '10'].
map(retIntB5)); // Array(5) [0, NaN, 2, 3, 10]
</script>
« Array . map ( ) » dans une opération qui utilise le premier argument
comme opérande : il faut spécifier ce premier paramètre, et utiliser une
fonction factice comme callback, avec le mot-clé return.
ARRAYS en JavaScript
53 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
<script type="text/javascript"> "use strict";
var depart = [0, 1, 2, 3, 9, Math.E];
var apTTT = depart.map(
function factice_inutile(x){
return Math.expm1(x)
}
);
console.dir("E=",Math.E,apTTT);
// E= 2.718281828459045
// […]
//
0: 0
//
1: 1.718281828459045
//
2: 6.38905609893065
//
3: 19.085536923187668
//
4: 8102.083927575384
//
5: 14.154262241479262
//
length: 6
</script>
Array . map ( ) avec destructuration :
<script type="text/javascript"> "use strict";
var tOrig = [ {clé:1, val:5}, {clé:0, val:10},
{clé:"trois", val:20}, {clé:"zero", val: 30}];
var tDestructuré = tOrig.map(obj => {
var rObj = {};
rObj[obj.clé] = obj.val;
return rObj;
});
console.dir(tDestructuré);
// […]
//
0: Object { 1: 5 }
//
1: Object [ 10 ]
//
2: Object { trois: 20 }
//
3: Object { zero: 30 }
//
length: 4
</script>
Quand on n’a pas besoin d’une valeur de retour, et que toutes les opérations doivent se passer et se terminer dans le corps/bloc de la routine,
alors le choix doit être dicté par la rapidité d’exécution.
ARRAYS en JavaScript
54 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Voici une comparaison des vitesses d’exécutions (benchmark) de 4 méthodes similaires de l’objet « Arrays » :
<script type="text/javascript"> "use strict";
let arr = [-5.25, 5.25, -2.5, 2.5, -6.75, 6.75, -4, 4];
let d, b=100000000;
console.log("Array.map");
d=new Date();
for(let k=b;k;k--)arr.map(el => {});
console.log(new Date()-d);
console.log("Array.forEach");
d=new Date();
for(let k=b;k;k--)arr.forEach(el => {});
console.log(new Date()-d);
console.log("Array.every");
d=new Date();
for(let k=b;k;k--)arr.every(el => {});
console.log(new Date()-d);
console.log("Array.some");
d=new Date();
for(let k=b;k;k--)arr.some(el => {});
console.log(new Date()-d);
</script>
Avec Firefox Quantum 64.0b13 :
ARRAYS en JavaScript
55 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Avec Yandex Version 18.11.1.385 beta :
Avec Google Chrome Version 70.0.3538.110 (Build officiel) (64 bits) :
ARRAYS en JavaScript
56 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Avec Citrio Version 50.0.2661.276 (5854/1) :
Avec UC Browser 7.0.185.1002 :
Avec Opera Neon Version 1.0.2531.0 :
ARRAYS en JavaScript
57 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Avec Opera Version :56.0.3051.116 :
Avec Torch Version 60.0.0.1508 (Build officiel)
ARRAYS en JavaScript
58 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Avec Vivaldi 1.14.1077.45 (Stable channel) (32 bits)
Révision
416aa8c28dba11af9ad54090f9e67662438acc75Système d’exploitation
Windows
JavaScript
V8 6.4.388.41
Flash 32.0.0.101 :
Avec
Brave
V8
rev
Muon
OS Release
Update Channel
OS Architecture
OS Platform
Node.js
Brave Sync
0.21.18
6.4.388.41
580be78
4.8.2
6.1.7601
Release
x64
Microsoft Windows
7.9.0
v1.4.2
ARRAYS en JavaScript
59 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
libchromiumcontent
JavaScript Tome-V
64.0.3282.140
Avec UR
Version 61.1.3163.16 (Build de développement) (BETA)
Avec Sushi
Version du navigateur: 0.21.3
Version chrome : 68.0.3440.84
Version Muon : 8.0.7 :
ARRAYS en JavaScript
60 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Avec Comodo Dragon Version 57.0.2987.93 (portable) :
ARRAYS en JavaScript
61 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
ITÉRABILITÉ DES CHAÎNES DE CARACTÈRES :
Une chaîne de caractères est itérable. C’est le seul objet natif ressemblant à un tableau, bien que immuables. On peut donc par exemple
soumettre chaque caractère d’une chaîne à la méthode Array.map(),
mais indirectement seulement, via l’appel “ Array.prototype.map.call(),
l’objet itérable à traiter étant le premier argument, et la fonction callback le deuxième, le résultat étant naturellement retournée (avec return)
comme array.
Convertir une « Array » en « String » :
Deux méthodes donnent exactement le même résultat de conversion
d’Array en String : le « Array . toStrong ( ) » et le « Array . join ( ) ».
<script type="text/javascript"> `use strict`;
console.log(["Un","Deux","Trois"] . toString());
// Un,Deux,Trois
console.log(["Un","Deux","Trois"] . join());
// Un,Deux,Trois
console.dir(Object.getOwnPropertyDescriptors(
["Un","Deux","Trois"] . toString()));
console.dir(Object.getOwnPropertyDescriptors(
["Un","Deux","Trois"] . join()));
</script>
ARRAYS en JavaScript
62 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Codes ASCII des caractères d’une chaîne :
<script type="text/javascript"> "use strict";
let map = Array.prototype.map;
let a = map.call('Congrats', function(x) {
let y=x.charCodeAt(0);
return [x.charAt(0), y ,
String.fromCharCode(y).toUpperCase()] });
console.dir(a);
// […]
//
0: Array [ "C", 67, "C" ]
//
1: Array [ "o", 111, "O" ]
ARRAYS en JavaScript
63 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
//
2: Array [
//
3: Array [
//
4: Array [
//
5: Array [
//
6: Array [
//
7: Array [
//
length: 8
</script>
"n",
"g",
"r",
"a",
"t",
"s",
110,
103,
114,
97,
116,
115,
JavaScript Tome-V
"N"
"G"
"R"
"A"
"T"
"S"
]
]
]
]
]
]
Vérifier si caractères sont entre ‘a’ - ‘z’ :
<script type="text/javascript"> "use strict";
let str="Progeria";
function estLettre(caract) {
let c = caract.toUpperCase();
return c >= 'A' && c <= 'Z';
}
if (Array.prototype.every.call(str, estLettre)) {
disp(str);
//La chaîne 'PROGERIA' n'a que des lettres (a - z)
}
if (Array.from(str).map(estLettre)) {
disp(str);
//La chaîne 'PROGERIA' n'a que des lettres (a - z)
}
function disp(s){
console.log("La chaîne '" + s.toUpperCase() +
"' n'a que des lettres (a - z)");
}
</script>
Une collection aussi étant itérable, peut être soumise à la méthode Array . map ( ), indirectement aussi, via l’appel “ Array . prototype .
map . call ( ), l’objet itérable à traiter étant le premier argument, et la
fonction callback le deuxième, le résultat étant aussi retournée (avec
return) comme array.
ARRAYS en JavaScript
64 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Dans l’exemple qui suit, sélectionnez par exemple Lyon, Opel et Venus
puis rafraîchissez la page.
<select>
<option>Algérie</option>
<option>Lyon</option>
<option>Kinshasa</option>
<option>Petersburg</option>
</select>
<select>
<option>Ford</option>
<option>Opel</option>
<option>Jaguard</option>
</select>
<select>
<option>Terre</option>
<option>Mars</option>
<option>Venus</option>
</select>
<script type="text/javascript"> "use strict";
var elems =
document.querySelectorAll('select option:checked');
var selec =
Array.prototype.map.call(elems, function(obj) {
return obj.value;
});
console.dir(selec);
// […]
//
0: "Lyon"
//
1: "Opel"
//
2: "Venus"
/// length: 3
</script>
Exemple plus long :
<script type="text/javascript"> "use strict";
const array1 = [12, , 3, , 7];
const array2 = [];
ARRAYS en JavaScript
65 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
const dispEls=(el, idx, array1) =>
array2.push("exp (a[" + idx+ "] = "+el+") = "+
Math.exp(el).toFixed(2));
array2.push("===== FOREACH");
let rf=array1.forEach(dispEls);
// Ce dispEls = adresse de la fonction callback
// qui elle, porte les arguments.
array2.push("===== MAP");
let rm=array1.map(dispEls);
// dispEls = adresse de la fonction callback.
console.dir("array2=",array2)
// array2= […]
// 0: "===== FOREACH"
// 1: "exp (a[0] = 12) = 162754.79"
// 2: "exp (a[2] = 3) = 20.09"
// 3: "exp (a[4] = 7) = 1096.63"
// 4: "===== MAP"
// 5: "exp (a[0] = 12) = 162754.79"
// 6: "exp (a[2] = 3) = 20.09"
// 7: "exp (a[4] = 7) = 1096.63"
// length: 8
console.log(array1.map(x=>Math.exp(x).toFixed(2)))
// Array [ "162754.79", <1 empty slot>,
//
"20.09", <1 empty slot>, "1096.63" ]
// […]
// 0: "162754.79"
// 2: "20.09"
// 4: "1096.63"
// length: 5
console.dir(array1.forEach(x=>Math.exp(x).toFixed(2)))
// undefined
console.dir("rf=",rf) // rf= undefined
console.log("rm=",rm)
// Array [ 6, <1 empty slot>, 7, <1 empty slot>, 8 ]
// […] , 0: 6 , 2: 7 , 4: 8
// length: 5
</script>
ARRAYS en JavaScript
66 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
N.B. : “ forEach ” est une propriété aussi bien de l’objet “ Array ” que
de son protothype “ Array.prototype ” :
Object.getOwnPropertyNames(Array) :
[…] 0: "isArray" , 1: "concat" , 2: "lastIndexOf" ,
3: "indexOf" , 4: "forEach" , 5: "map" , 6: "filter" ,
7: "every" , 8: "some" , 9: "reduce" , 10: "reduceRight" ,
11: "join" , 12: "reverse" , 13: "sort" , 14: "push" ,
15: "pop" , 16: "shift" , 17: "unshift" , 18: "splice" ,
19: "slice" , 20: "from" , 21: "of" , 22: "prototype" ,
23: "length" , 24: "name"
length: 25
Object.getOwnPropertyNames(Array.prototype) :
[…]
0: "length" , 1: "toSource" , 2: "toString" ,
3: "toLocaleString" , 4: "join" , 5: "reverse" ,
6: "sort" , 7: "push" , 8: "pop" , 9: "shift" ,
10: "unshift" , 11: "splice" , 12: "concat" ,
13: "slice" , 14: "lastIndexOf" , 15: "indexOf" ,
16: "forEach" , 17: "map" , 18: "filter" , 19: "reduce" ,
20: "reduceRight" , 21: "some" , 22: "every"
23: "find" , 24: "findIndex" , 25: "copyWithin" ,
26: "fill" , 27: "entries" , 28: "keys" , 29: "includes" ,
30: "constructor"
length: 31
Array . reduce ( ) :
Applique une action à l’ensemble de tous les éléments de l’Array (du
premier au dernier), l’opération s’effectuant de l’extrême gauche vers
l’extrême droite.
<script type="text/javascript">
'use strict';
let arr;
arr = [30, 15, 10, 1, 20];
console.log(arr.reduce((x, y) => x + y)); // 76
ARRAYS en JavaScript
67 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log(arr.reduce((x, y) => x * y)); // 90000
console.log(arr.reduce((x, y) => x - y)); // -16
console.log("=".repeat(20));
arr = [4, 4, -3, 0, -5, 0, 0, -2, 2, 2];
const Min = (x, y) => x < y ? x : y
const min = (collection) =>
arr.reduce(Min, collection);
console.log(min()); // -5
console.log("=".repeat(20));
arr = [0, 0, 2, 6, 1, 2, 1, -3, 1, 1];
const Max = (x, y) => x > y ? x : y
const max = (collection) =>
arr.reduce(Max, collection);
console.log(max()); // 6
console.log("=".repeat(20));
arr = [0, -6, -2, 3, 2, 3, 7, -2, 5, -4];
console.log("min =",min(arr)," | ","Max =",max(arr));
// min = -6 | Max = 7
</script>
ARRAYS en JavaScript
68 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Array . reduceRight ( ) :
Applique une action à l’ensemble de tous les éléments de l’Array (du
premier au dernier), l’opération s’effectuant de l’extrême droite vers
l’extrême gauche.
<script type="text/javascript">
let arr;
arr = [30, 15, 10, 1, 20];
console.log(arr.reduceRight((x,
console.log(arr.reduceRight((x,
console.log(arr.reduceRight((x,
'use strict';
y) => x + y)); // 76
y) => x * y)); // 90000
y) => x - y)); // -36
console.log("=".repeat(20));
arr = [4, 4, -3, 0, -5, 0, 0, -2, 2, 2];
const Min = (x, y) => x < y ? x : y
const min = (collection) =>
arr.reduceRight(Min, collection);
console.log(min()); // -5
console.log("=".repeat(20));
arr = [0, 0, 2, 6, 1, 2, 1, -3, 1, 1];
const Max = (x, y) => x > y ? x : y
const max = (collection) =>
arr.reduceRight(Max, collection);
console.log(max()); // 6
console.log("=".repeat(20));
arr = [0, -6, -2, 3, 2, 3, 7, -2, 5, -4];
console.log("min =",min(arr)," | ","Max =",max(arr));
// min = -6 | Max = 7
</script>
Array . join ( ) :
ARRAYS en JavaScript
69 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Retourne une « String = Chaîne de caractères » résultant de la conversion d’une « Array » (tableau), et donc comme si simplement supprimait les crochets. L’Array initiale reste intacte, les éléments dans l’Array
ainsi créée étant séparés par la chaîne séparatrice spécifiée comme paramètre dans l’instruction.
<script type="text/javascript"> "use strict";
let v = new Uint8ClampedArray(
[86, 8, 512, 14, 125, 149, 815, 66]
);
console.log ( v );
// Uint8ClampedArray(8)
// [ 86, 8, 255, 14, 125, 149, 255, 66 ]
console.log ( v.join(' # ') );
// 86 # 8 # 255 # 14 # 125 # 149 # 255 # 66
console.log ( v );
// Uint8ClampedArray(8)
// [ 86, 8, 255, 14, 125, 149, 255, 66 ]
</script>
Array . split ( ) :
Retourne une « Array » résultant de la conversion en une « String »
dans laquelle une sous-chaîne est spécifiée comme séparateur, et donc
aussi délimite la chaîne par des crochet en remplaçant la chaîne séparatrice par une virgule. La chaîne initiale reste intacte.
<script type="text/javascript"> "use strict";
let v = "86 # 8 # 255 # 14 # 125 # 149 # 255 # 66";
//
console.log ( v );
86 # 8 # 255 # 14 # 125 # 149 # 255 # 66
ARRAYS en JavaScript
70 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
console.log ( v.split(' # ') );
// Array(8)
// [ "86","8","255","14","125","149","255","66" ]
console.log ( v );
// 86 # 8 # 255 # 14 # 125 # 149 # 255 # 66
</script>
Remarque :
Il ne faut pas confondre la méthode « . split » et les méthodes « . slice »
et « . splice ».
Array . splice ( ) :
Conserve de l’Array source, seulement ses x premiers éléments selon le
nombre spécifié en paramètre de l’appel de la méthode. Le reste des
éléments est retourné dans une autre Array.
<script type="text/javascript"> "use strict";
let v = [ "86","8","255","14","125","149","255","66" ]
console.log ( v );
// Array(8)
// [ "86","8","255","14","125","149","255","66" ]
console.log ( v.splice(3) );
// Array(5) [ "14", "125", "149", "255", "66" ]
console.log ( v );
// Array(3) [ "86", "8", "255" ]
</script>
ARRAYS en JavaScript
71 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
CHAPITRE 6 : LES ARRAYS... :
Syntaxe :
var arr = new Array()
var arr = new Array([taille])
var arr = new Array([el0[, el1[, ...[, elN]]]])
Exemples :
<script type="text/javascript"> "use strict";
// Array à taille initiale indéterminée
var arrayObj = new Array()
console.log(arrayObj.length)
// Array à autant d'éléments
var arrayObj = new Array(5, "text", {}, _=>{})
console.log(arrayObj.length)
// Array à autant d'éléments
var arrayObj = [5, "text", {}, _=>{}]
console.log(arrayObj.length)
// Array à taille initiale 5 éléments
// Pas à élément unique = 5
var arrayObj = new Array(5)
console.log(arrayObj.length)
// Array à élément unique = 5
var arrayObj = new Array(Math.pow(2,3))
console.log(arrayObj.length)
console.log(arrayObj[0])
// Array à élément unique = 5
var arrayObj = new Array("Quelletaille")
console.log(arrayObj.length)
console.log(arrayObj[0])
// Array à élément unique = 5
ARRAYS en JavaScript
72 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
var arrayObj = new Array("Quelletaille".length)
console.log(arrayObj.length)
console.log(arrayObj[0])
// Array à élément unique = 5
var arrayObj = [5]
console.log(arrayObj.length)
// Array à élément unique = 5
var arrayObj = new Array([5])
console.log(arrayObj.length)
// Array à élément unique = 5
var arrayObj = [Math.pow(2,3)]
console.log(arrayObj.length)
console.log(arrayObj[0])
// Array à élément unique = 5
var arrayObj = ["Quelletaille"]
console.log(arrayObj.length)
console.log(arrayObj[0])
// Array à élément unique = 5
var arrayObj = ["Quelletaille".length]
console.log(arrayObj.length)
console.log(arrayObj[0])
</script>
Exécution :
0
4
4
5
8
undefined
1
Quelletaille
12
undefined
1
1
1
ARRAYS en JavaScript
test.html:6:3
test.html:10:3
test.html:14:3
test.html:19:3
test.html:23:3
test.html:24:3
test.html:28:3
test.html:29:3
test.html:33:3
test.html:34:3
test.html:38:3
test.html:42:3
test.html:46:3
73 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
8
1
Quelletaille
1
12
test.html:47:3
test.html:51:3
test.html:52:3
test.html:56:3
test.html:57:3
On ne peut accéder aux membres d’une Array que par un index
<script type="text/javascript"> "use strict";
var arr = [
"rose",
45,
function(){console.log("Hello")}
]
console.log(arr[0])
console.log(arr[1])
arr[2]
arr[2]()
console.log(arr[2]())
console.log("=====")
for(var i in arr)console.log(i+". "+arr[i])
</script>
Exécution :
rose
45
Hello
undefined
=====
0. rose
1. 45
2. function(){console.log("Hello")}
test.html:9:3
test.html:10:3
test.html:6:19
test.html:13:3
test.html:14:3
test.html:15:20
test.html:15:20
test.html:15:20
Méthodes entries et vaules apppliquée aux arrays :
<script type="text/javascript">
var arr = [
"rose",
45,
ARRAYS en JavaScript
"use strict";
74 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
function(){console.log("Hello")}
]
console.log(arr[0])
console.log(arr[1])
console.log(arr[2]) // Affiche la fonction
arr[2]()
// Exécute la fonction
console.log(arr[2]()) // Ne retourne rien (undefined)
console.log("=====")
for(var i in arr)console.log(i+". "+arr[i])
console.log(Object.entries(arr));
console.log(Object.values(arr));
console.log(">============<");
for(var [cle,val] of Object.entries(arr))
console.log("*"+cle+'^ '+val);
console.log(`=====================================
*** Itération, itérable, itérator ***
=====================================`);
const ITERABLE = Object.values(arr)
const ITERATOR = ITERABLE[Symbol.iterator]();
for(let key in ITERABLE)console.log(ITERATOR.next())
console.log(ITERATOR.next())
console.log(ITERATOR.next())
</script>
Exécution :
rose
45
ƒ (){console.log("Hello")}
Hello
Hello
undefined
=====
0. rose
1. 45
2. function (){console.log("Hello")}
(3) [Array(2), Array(2), Array(2)]
1
test.html:9
test.html:10
test.html:11
test.html:6
test.html:6
test.html:13
test.html:14
test.html:15
test.html:15
test.html:15
test.html:16
0:(2) ["0", "rose"]
ARRAYS en JavaScript
75 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
2
3
4
5
JavaScript Tome-V
1:(2) ["1", 45]
2:(2) ["2", ƒ]
length:3
__proto__:Array(0)
(3) ["rose", 45, ƒ]
1
2
3
4
5
test.html:17
0:"rose"
1:45
2:ƒ ()
length:3
__proto__:Array(0)
>============<
*0^ rose
*1^ 45
*2^ function (){console.log("Hello")}
test.html:18
test.html:20
test.html:20
test.html:20
Si c’était sur un objet , ce serait comme ceci :
<script type="text/javascript"> "use strict";
var obj = {
col:"rose",
prix:45,
11:function(){console.log("Hello")}
}
console.log(obj["col"])
// rose
console.log(obj.prix)
// 45
console.log(obj[11]) // Affiche la fonction
// function 11()
obj["11"]()
// Hello
// Exécute la fonction
console.log(obj[11]()) // Ne retourne rien (undefined)
// undefined
console.log("=====")
for(var i in obj)console.log(i+". "+obj[i])
/*
ARRAYS en JavaScript
76 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
11. function(){console.log("Hello")}
col. rose
prix. 45
*/
console.log(Object.entries(obj));
// Array [ […], […], […] ]
console.log(Object.values(obj));
// Array [ 11(), "rose", 45 ]
console.log(">============<");
for(var [cle,val] of Object.entries(obj))
console.log("*"+cle+'^ '+val);
/*
*11^ function(){console.log("Hello")}
*col^ rose
*prix^ 45
*/
console.log(`=====================================
*** Itération, itérable, itérator ***
=====================================`);
const ITERABLE = Object.values(obj)
const ITERATOR = ITERABLE[Symbol.iterator]();
for(let key
/*
Object {
Object {
Object {
*/
in ITERABLE)console.log(ITERATOR.next())
value: 11(), done: false }
value: "rose", done: false }
value: 45, done: false }
console.log(ITERATOR.next())
// Object { value: undefined, done: true }
console.log(ITERATOR.next())
// Object { value: undefined, done: true }
</script>
Exécution avec YANDEX :
ARRAYS en JavaScript
77 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
test.html:8
test.html:11
test.html:14
2test.html:5
test.html:20
test.html:23
test.html:25
test.html:25
test.html:25
test.html:32
test.html:35
test.html:38
test.html:41
test.html:41
test.html:41
test.html:48
test.html:55
test.html:55
test.html:55
test.html:62
test.html:65
JavaScript Tome-V
rose
45
ƒ (){console.log("Hello")}
Hello
undefined
=====
11. function (){console.log("Hello")}
col. rose
prix. 45
Array(3)
Array(3)
>============<
*11^ function (){console.log("Hello")}
*col^ rose
*prix^ 45
=====================================
*** Itération, itérable, itérator ***
=====================================
Object
Object
Object
Object
Object
Quelques méthodes de l’objet Array, en life :
<script type="text/javascript">
"use strict";
var c1, c2, r, s, arr =[], arr2=[];
console.log(arr);
console.log('### arr.push("1. Pushed") ==> '+
arr.push("1. Pushed"))
console.log(arr);
console.log('### arr.unshift("2. Unshifted") ==> '+
arr.unshift("2. Unshifted"))
console.log(arr);
console.log('### arr.push("3. 2nd Push") ==>
'+arr.push("3. 2nd Push"))
console.log(arr);
console.log('### (4. arr[arr.length]="ARR.LENGTH") ==> '+
ARRAYS en JavaScript
78 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
(arr[arr.length]="4. ARR.LENGTH"))
console.log(arr);
console.log('### 5a. (r=arr.slice(0,2)) ==> '+
(r=arr.slice(0,2)))
console.log('### 5b. (s=arr.slice(2)) ==> '+
(s=arr.slice(2)))
console.log(arr);
console.log(r);
console.log(s);
console.log('### 6. (c1=r.concat(s)) ==> '+
(c1=r.concat(s)))
console.log(arr);
console.log("c1="+c1);
console.log('### 7. (c2=r+["Add1","Add2"]+s) ==> '+
(c2=r+["Add1","Add2"]+s))
console.log(arr);
console.log(c2);
console.log(
'### 8. (c2=r.concat(["Add1","Add2"]).concat(s)) ==> '+
(c2=r.concat(["Add1","Add2"]).concat(s)))
console.log(arr);
console.log(c2);
console.log('### 9. (arr2=r.join(" <=> ") ==> '+
(arr2=r.join(" <=> ")))
console.log(arr2);
console.log(r);
console.log(s);
console.log(arr2);
console.log(
'### 10. (arr2="La bave du crapeau".split(" ") ==> '+
(arr2="La bave du crapeau".split(" ")))
// String.split()
console.log(arr2);
console.log('### c2.shift("11. Shifted") ==>
'+c2.shift("11. Shifted"))
console.log(c2);
console.log('### c2.pop("12. Poped") ==> '+
c2.pop("12. Poped"))
console.log(c2);
console.log('### 13. c2.splice(0,1) ==> '+
c2.splice(0,1))
console.log(c2);
</script>
ARRAYS en JavaScript
79 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Exécution :
Array []
test.html:3:3
### arr.push("1. Pushed") ==> 1
test.html:4:3
Array [ "1. Pushed" ]
test.html:5:3
### arr.unshift("2. Unshifted") ==> 2
test.html:6:3
Array [ "2. Unshifted", "1. Pushed" ]
test.html:8:3
### arr.push("3. 2nd Push") ==> 3
test.html:9:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push" ]
test.html:10:3
### (4. arr[arr.length]="ARR.LENGTH") ==> 4. ARR.LENGTH
test.html:11:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:13:3
### 5a. (r=arr.slice(0,2)) ==> 2. Unshifted,1. Pushed
test.html:14:3
### 5b. (s=arr.slice(2)) ==> 3. 2nd Push,4. ARR.LENGTH
test.html:15:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:16:3
Array [ "2. Unshifted", "1. Pushed" ]
test.html:17:3
Array [ "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:18:3
### 6. (c1=r.concat(s)) ==> 2. Unshifted,1. Pushed,3. 2nd Push,4. ARR.LENGTH
test.html:19:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:20:3
c1=2. Unshifted,1. Pushed,3. 2nd Push,4. ARR.LENGTH
test.html:21:3
### 7. (c2=r+["Add1","Add2"]+s) ==> 2. Unshifted,1. PushedAdd1,Add23. 2nd
Push,4. ARR.LENGTH
test.html:22:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:24:3
2. Unshifted,1. PushedAdd1,Add23. 2nd Push,4. ARR.LENGTH
test.html:25:3
### 8. (c2=r.concat(["Add1","Add2"]).concat(s)) ==> 2. Unshifted,1.
Pushed,Add1,Add2,3. 2nd Push,4. ARR.LENGTH
test.html:26:3
Array [ "2. Unshifted", "1. Pushed", "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:29:3
Array [ "2. Unshifted", "1. Pushed", "Add1", "Add2", "3. 2nd Push", "4.
ARR.LENGTH" ]
test.html:30:3
### 9. (arr2=r.join(" <=> ") ==> 2. Unshifted <=> 1. Pushed test.html:31:3
2. Unshifted <=> 1. Pushed
test.html:32:3
Array [ "2. Unshifted", "1. Pushed" ]
test.html:33:3
Array [ "3. 2nd Push", "4. ARR.LENGTH" ]
test.html:34:3
2. Unshifted <=> 1. Pushed
test.html:35:3
### 10. (arr2="La bave du crapeau".split(" ") ==> La,bave,du,crapeau
test.html:36:3
Array [ "La", "bave", "du", "crapeau" ]
test.html:37:3
### c2.shift("11. Shifted") ==> 2. Unshifted
test.html:38:3
Array [ "1. Pushed", "Add1", "Add2", "3. 2nd Push", "4. ARR.LENGTH" ]
ARRAYS en JavaScript
80 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
### c2.pop("12. Poped") ==> 4. ARR.LENGTH
Array [ "1. Pushed", "Add1", "Add2", "3. 2nd Push" ]
### 13. c2.splice(0,1) ==> 1. Pushed
Array [ "Add1", "Add2", "3. 2nd Push" ]
test.html:39:3
test.html:40:3
test.html:41:3
test.html:42:3
test.html:43:3
Array.forEach :
<script type="text/javascript">
"use strict";
var arr=[-2,-1,0,1,2,3,4,5,6,7,8,9,10,20,30,40];
console.log("1 kByte, 1 MByte, 1 Giga, 1 Tera");
arr.forEach(x=>{
let r=Math.pow(2,x);
console.log("2^"+x+" = "+r+" (×2= "+2*r+" | ×3=
"+r*3+")");
})
</script>
Exécution :
1 kByte, 1 MByte, 1 Giga, 1 Tera
2^-2 = 0.25 (×2= 0.5 | ×3= 0.75)
2^-1 = 0.5 (×2= 1 | ×3= 1.5)
2^0 = 1 (×2= 2 | ×3= 3)
2^1 = 2 (×2= 4 | ×3= 6)
2^2 = 4 (×2= 8 | ×3= 12)
2^3 = 8 (×2= 16 | ×3= 24)
2^4 = 16 (×2= 32 | ×3= 48)
2^5 = 32 (×2= 64 | ×3= 96)
2^6 = 64 (×2= 128 | ×3= 192)
2^7 = 128 (×2= 256 | ×3= 384)
2^8 = 256 (×2= 512 | ×3= 768)
2^9 = 512 (×2= 1024 | ×3= 1536)
2^10 = 1024 (×2= 2048 | ×3= 3072)
2^20 = 1048576 (×2= 2097152 | ×3= 3145728)
2^30 = 1073741824 (×2= 2147483648 | ×3= 3221225472)
2^40 = 1099511627776 (×2= 2199023255552 | ×3= 3298534883328)
ARRAYS en JavaScript
81 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
Kinshasa, le 4 avril 2019 (10:42 ).
Mots-clés :
destructuring, destructuration, every, filter, find, fndIndex, forEach, from, indexOf, isArray, join, lastIndexOf,
length, map, splice, includes, push, of, pop, concat, reduce, reduceRight, reverse, shift, slice, some, sort, delete,
unshift, Array, objet global, constructeur, tableaux, objets de haut-niveau, javascript, ecmascript, name, prototype
ARRAYS en JavaScript
82 / 83
jeudi, 4. avril 2019
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-V
DIASOLUKA Nz. Luyalu
Docteur en Médecine, Chirurgie & Accouchements (1977),
CNOM : 0866 - Spécialiste en ophtalmologie (1980)
Études humanités : Scientifique - Mathématiques & Physique.
Informaticien-amateur, Programmeur et WebMaster.
Chercheur indépendant, autonome et autofinancé, bénévole, sans aucun conflit
d’intérêt ou liens d'intérêts ou contrainte promotionnelle avec qui qu’il soit ou
quelqu’organisme ou institution / organisation que ce soit, étatique,
paraétatique ou privé, industriel ou commercial en relation avec le sujet
présenté.
+243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818
[email protected]
ARRAYS en JavaScript
83 / 83
jeudi, 4. avril 2019